好的,我一直在阅读一本关于C#和.NET的书,当学习DateTime结构和以下代码时:
DateTime dt = new DateTime(2015, 10, 17);
我问自己:“为什么我不需要在顶部写上using System.DateTime
来引用它呢?”
后来我意识到,由于DateTime是一个结构体,而“using”关键字是用来引用类型(类型是一个通用术语,用于指代来自集合{类、接口、结构体、枚举、委托}的成员),这些类型定义在特定的命名空间中(在本例中,DateTime是System命名空间中的结构体类型)。
但我注意到,在文件顶部,以下using指令被找到(当我创建C#控制台应用程序时,它们是自动放在那里的):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
当我们已经在 System 命名空间下时,为什么需要使用在 using System
后面声明的 using 指示呢?难道它们不都属于 System 命名空间吗,因此应该已经被引用了吗?
我猜想是因为它们下面声明的都是命名空间,而不是 {class, interface, structure, enumeration, delegate} 集合中的类型。但是如果我们将它们称为“属于命名空间 System 的命名空间”,这样说是否不正确?如果不正确,为什么必须显式地引用命名空间的命名空间,而不能将它们隐式地包含在using System
之下呢?
希望我的问题表达清晰,如果有不清楚的地方,请告诉我以便我进行编辑。
using System.DateTime
,因为你从来没有类(或结构体)使用这种语法。有其他使用using
的方法,这些方法在 https://msdn.microsoft.com/en-us/library/sf0df423.aspx 中有描述。就名称解析而言,结构体和类(以及接口和任何其他你能想到的东西)都可以工作得一样好。 - Chris