为什么我不需要引用“System.dll”来使用“System”命名空间?

我正在编写一个指定“不要使用任何外部库”的作业。 所以我创建了ac#应用程序,我做的第一件事是默认删除所有dll的引用…包括“System.dll”。

但是,我仍然可以将其添加到我的代码中:

using System; using System.IO; 

我很好奇为什么我不需要在我的项目中使用System.dll作为参考来执行此操作。 谢谢!

mscorlib.dll包含这两个名称空间中的项目。

您需要右键单击项目>属性>构建>高级…并选中“不要引用mscorlib.dll”以删除此引用。

不同的程序集可以贡献相同的命名空间。

即使您没有引用System.dll,您仍然引用(隐式)mscorlib.dll,它为System命名空间提供了许多类型。

这些引用可能在您的Web.configMachine.config文件中定义,因此它们默认包含在内。

这些是默认库。我认为你的问题是“不要使用第三方dll”

另一件需要考虑的事情是,如果您直接通过命令行进行编译,编译器会通过默认响应文件(csc.rsp)解析默认的一组开关,包括默认库引用,该文件位于同一目录中。编译器。 您可以从基类库导入名称空间而无需在编译时显式引用它们,这是因为默认情况下它们的包含程序集包含在您的程序中。 要在命令行中更改此行为,可以使用/ nostdlib开关强制它不包含mscorlib.dll,或者可以使用/ noconfig让它完全忽略整个默认响应文件。 另外,我不太清楚system.dll的含义,因为你提到的命名空间包含在mscorlib.dll中。 此外,我认为通过“外部图书馆”,您的教练必须具有任何可以帮助您解决问题的第三方程序集。 .NET SDK中包含的任何内容都将更像是一个框架库。 除非你的老师非常苛刻,并希望你重新发明轮子:P