Взгляните на эту простую программу на C#:
using System;
namespace testProgram
{
internal class Program
{
static void Main(string[] args)
{
List<string> list = new List<string>();
list.Add("List element.");
Console.WriteLine(list[0]);
}
}
}
Выход:
List element.
Вы можете видеть, что он использует список. Я всегда видел в Интернете, что для использования списка мне нужно добавить «using System.Collections.Generic;» в начале моего файла. Однако программа может работать и без этой строки, почему?
Какой компилятор/IDE вы используете?
@Pac0 Я использую сообщество Visual Studio 2022.





Посмотрите на свой файл проекта. Я сильно подозреваю, что это будет включать в себя это:
<ImplicitUsings>enable</ImplicitUsings>
Функция ImplicitUsings описана здесь:
Свойство
ImplicitUsingsможно использовать для включения и отключения неявных директивglobal usingв проектах C#, предназначенных для .NET 6 или более поздней версии и C# 10 или более поздней версии. Когда эта функция включена, пакет SDK для .NET добавляетglobal usingдирективы для набора пространств имен по умолчанию в зависимости от типа пакета SDK проекта. Установите для этого свойства значениеtrueилиenable, чтобы включить неявные директивыglobal using. Чтобы отключить неявные директивыglobal using, удалите свойство или установите для него значениеfalseилиdisable.
Обратите внимание, что это означает, что вам также не нужен using System;.
В сочетании с операторами верхнего уровня весь ваш файл может быть:
List<string> list = new List<string>();
list.Add("List element.");
Console.WriteLine(list[0]);
Или, если пространство имен важно для вас:
namespace testProgram;
List<string> list = new List<string>();
list.Add("List element.");
Console.WriteLine(list[0]);
Да, эта строка есть в моем файле проекта.
Это не компилируется на моем онлайн-компиляторе
error CS0246: The type or namespace name 'List<>' could not be found (are you missing a using directive or an assembly reference?). programiz.com/csharp-programming/онлайн-компилятор