【发布时间】:2010-03-24 05:46:49
【问题描述】:
即使我们不导入“系统”命名空间,也可以访问“系统”命名空间中包含的各种项目。就像各种类型(字符串、单一、布尔、十进制...)、对象类以及对象类的函数的别名。这些项目通过智能可见。 当我们导入系统名称空间(使用 System)时,我们可以访问其中的所有类型(Array、Enum 等等)以及实际类型(System.String、System.Float 等)。
谁能告诉我这是为什么?
【问题讨论】:
即使我们不导入“系统”命名空间,也可以访问“系统”命名空间中包含的各种项目。就像各种类型(字符串、单一、布尔、十进制...)、对象类以及对象类的函数的别名。这些项目通过智能可见。 当我们导入系统名称空间(使用 System)时,我们可以访问其中的所有类型(Array、Enum 等等)以及实际类型(System.String、System.Float 等)。
谁能告诉我这是为什么?
【问题讨论】:
c# 类型别名 {bool, byte, char, decimal, double, float, int, long, object, sbyte, short, string, uint, ulong, ushort } 不是 BCL 系统命名空间的一部分,它们'实际上是 C# 语言的一部分
碰巧在任何使用“字符串”作为类型名称的地方,C# 编译器都会在编译时将其视为 System.String。我相信(我很可能错了!) using 语句实际上并没有传递到编译器生成的 MSIL,因此对“string”类型的每个引用都明确列为“System.String”,并且每个对StringBuilder(例如,在具有“using System.Text;”的类中扩展为“System.Text.StringBuilder”。
【讨论】:
系统命名空间自动导入:
"CLR在编译ASP.NET应用程序的时候会包含Namespace。一些命名空间会自动导入到ASP.NET页面中,所以不需要使用Import来让CLR包含它们。System, System.Collections 、System.IO、System.Web、System.Web.UI、System.Web.UI.HTMLControls 和 System.Web.UI.WebControls 是 CLR 始终考虑的命名空间。类似 System 的命名空间。如果您使用数据库,您可能需要的数据需要明确导入。”
【讨论】: