【发布时间】:2016-12-04 15:27:31
【问题描述】:
好的,我一直在阅读一本关于 C# 和 .NET 的书,同时学习了 DateTime 结构和以下代码:
DateTime dt = new DateTime(2015, 10, 17);
我问自己“为什么我不用写using System.DateTime在顶部引用它?”
所以我意识到,由于 DateTime 是一个结构,并且“using”关键字用于引用类型(类型是一个通用术语,用于引用集合 {class, interface, structure, enumeration, delegate} 中的成员) ,在特定的命名空间中定义(在这种情况下,DateTime 是来自系统命名空间的类型结构)。
但我注意到在我的文件顶部,找到了以下 using 指令(它们是在我创建 C# 控制台应用程序时自动放在那里的):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
我想知道为什么 using System 后面的 using 指令是必要的,什么时候它们不都在 System 命名空间下,因此它们应该已经被引用?
所以我猜这是因为在它下面声明的所有都是命名空间,而不是来自集合 {class, interface, structure, enumeration, delegate} 的类型。但是将它们称为“命名空间系统(或属于)命名空间系统”是否是错误的,如果是这样,您必须显式引用命名空间的命名空间而不是将它们隐式包含在using System 下的原因是什么? ?
我希望我的问题很清楚,但如果没有,请告诉我,以便我进行编辑。
【问题讨论】:
-
只是为了澄清你似乎有的一个误解:在你的例子中使用后面的都是命名空间。你永远不会有像
using System.DateTime这样的东西,因为你从来没有使用这种语法的类(或结构)。还有其他使用using的方法,在msdn.microsoft.com/en-us/library/sf0df423.aspx 中有描述。在名称解析方面,尽管结构和类(以及接口和您能想到的任何其他东西)的工作方式都差不多。
标签: c# .net namespaces