【问题标题】:items get imported even without importing the Namespace即使没有导入命名空间,项目也会被导入
【发布时间】:2010-03-24 05:46:49
【问题描述】:

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

谁能告诉我这是为什么?

【问题讨论】:

    标签: visual-studio-2008 c#-3.0


    【解决方案1】:

    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”。

    【讨论】:

    • 感谢 Rob 的回复。我得到了问题的答案。
    【解决方案2】:

    系统命名空间自动导入:

    "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 的命名空间。如果您使用数据库,您可能需要的数据需要明确导入。”

    http://www.redacron.com/tutorials/ASPNET/namespaces.php

    Here's a related question you may be interested in.

    【讨论】:

    • 感谢 John 的回复。但我指的是我正在删除所有默认导入的情况。我没有任何“使用”语句。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-24
    • 1970-01-01
    • 1970-01-01
    • 2020-02-14
    • 2015-03-29
    • 2010-09-05
    相关资源
    最近更新 更多