Visual studio 2008 即使不导入名称空间,也会导入项

Visual studio 2008 即使不导入名称空间,也会导入项,visual-studio-2008,c#-3.0,Visual Studio 2008,C# 3.0,即使我们不导入“系统”名称空间,也可以访问“系统”名称空间中包含的各种项目。类似于各种类型(字符串、单个、布尔、十进制…)的别名、对象类以及对象类的函数。这些项目通过Intellisence可见。 当我们导入系统名称空间(使用System)时,我们可以访问其中的所有类型(数组、枚举等)以及实际类型(System.String、System.Float等) 谁能告诉我这是为什么 系统名称空间将自动导入: “编译ASP.NET应用程序时,CLR将包含命名空间。某些名称空间会自动导入到ASP.NET页

即使我们不导入“系统”名称空间,也可以访问“系统”名称空间中包含的各种项目。类似于各种类型(字符串、单个、布尔、十进制…)的别名、对象类以及对象类的函数。这些项目通过Intellisence可见。 当我们导入系统名称空间(使用System)时,我们可以访问其中的所有类型(数组、枚举等)以及实际类型(System.String、System.Float等)


谁能告诉我这是为什么

系统名称空间将自动导入:

“编译ASP.NET应用程序时,CLR将包含命名空间。某些名称空间会自动导入到ASP.NET页面中,因此您不需要使用导入来使CLR包含它们。System、System.Collections、System.IO、System.Web、System.Web.UI、System.Web.UI.HTMLControls和System.Web.UI.WebControls是CLR将始终考虑的名称空间。使用数据库时可能需要的名称空间(如System.Data)需要明确导入。”

c#类型别名{bool、byte、char、decimal、double、float、int、long、object、sbyte、short、string、uint、ulong、ushort}不是BCL系统名称空间的一部分,它们实际上是c#语言的一部分


碰巧的是,在使用“string”作为类型名的任何地方,C#编译器在编译时都将其视为System.string。我相信(我可能错了!)using语句实际上并没有传递到编译器生成的MSIL,因此对类型“string”的每个引用都显式地列为“System.string”“并且对StringBuilder的每一次引用(例如,在一个具有“using System.Text;”的类中)都扩展为“System.Text.StringBuilder”。

谢谢Rob的回答。我得到了我问题的答案。谢谢John的回答。但我指的是一种情况,我正在删除所有默认导入。我没有任何“using”声明。