为什么我可以使用 C# 列表而无需编写“using System.Collections.Generic;” 在我的文件的开头?

Spa*_*ton 4 c# list

看一下这个简单的 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]);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

List element.
Run Code Online (Sandbox Code Playgroud)

您可以看到它使用了一个列表。我总是在互联网上看到,为了使用列表,我需要添加“using System.Collections.Generic;” 在我的文件的开头。但是,没有这行代码,程序也能运行,为什么呢?

Jon*_*eet 11

查看您的项目文件。我强烈怀疑其中会包括以下内容:

<ImplicitUsings>enable</ImplicitUsings>
Run Code Online (Sandbox Code Playgroud)

ImplicitUsings功能描述如下

ImplicitUsings属性可用于global using在面向 .NET 6 或更高版本以及 C# 10 或更高版本的 C# 项目中启用和禁用隐式指令。启用该功能后,.NET SDK 会global using根据项目 SDK 的类型添加一组默认命名空间的指令。将此属性设置为trueenable以启用隐式global using指令。要禁用隐式global using指令,请删除该属性或将其设置为falsedisable

请注意,这意味着您也不需要using System;

结合顶级语句,您的整个文件实际上可能是:

List<string> list = new List<string>();
list.Add("List element.");
Console.WriteLine(list[0]);
Run Code Online (Sandbox Code Playgroud)

或者,如果命名空间对您很重要:

namespace testProgram;

List<string> list = new List<string>();
list.Add("List element.");
Console.WriteLine(list[0]);
Run Code Online (Sandbox Code Playgroud)