为什么我能够使用System.Collections.Generic命名空间而不引用任何程序集?

时间:2017-11-05 09:22:48

标签: c# visual-studio

我删除了 References 节点中的所有引用,但我仍然可以使用System.Collections.Generic命名空间。为什么?是因为Visual Studio默认以某种方式添加它们吗?但如果是这种情况,我至少应该能够看到它的 .csproj 文件。

这里发生了什么?

enter image description here

2 个答案:

答案 0 :(得分:4)

The documentation for List<T>表示该类在mscorlib中定义。每个C#项目都会自动隐式使用它。它必须是,因为它是定义基本类型的相同程序集,例如objectvoidstringint。如果没有这些代码,你将无法编写C#代码,这就是为什么对程序集进行特殊处理的原因。

有一些方法可以抑制它的包含,但这只有在你打算重新实现整个.NET运行时才有用,否则你将无法使用生成的程序集。

答案 1 :(得分:2)

命名空间不一定与程序集一对一映射。例如,没有单独的System.Collections.Generic.dllSystem.Collections.Specialized.dll

mscorlib.dllSystem.dll程序集包含大多数“基本”命名空间,并且它们在C#项目中被隐式引用。