3 本我 3周前 92次点击
在继续学习前,应花一定的时间了解一个比较重要的主题—— 名称空间。它们是.NET中提供应用程序代码容器的方式,这样就可以唯一地标识代码及其内容。名称空间也用作.NET Framework中给项分类的一种方式。大多数项都是类型定义,例如,简单类型(System.Int32等)。
默认情况下,C#代码包含在全局名称空间中。这意味着对于包含在这段代码中的项,全局名称空间中的其他代码只要通过名称进行引用,就可以访问它们。可使用namespace关键字为花括号中的代码块显式定义名称空间。如果在该名称空间代码的外部使用名称空间中的名称,就必须写出该名称空间中的限定名称。
限定名称包括它所有的分层信息。这意味着,如果一个名称空间中的代码需要使用在另一个名称空间中定义的名称,就必须包括对该名称空间的引用。限定名称在不同的名称空间级别之间使用句点字符(.),如下所示:
namespace LevelOne
{
//LevelOne命名空间中的代码
//定义 name "NameOne"
}
//全局命名空间中的代码
这段代码定义了一个名称空间LevelOne,以及该名称空间中的一个名称NameOne(注意这里在应该定义名称空间的地方添加了一个注释,而没有列出实际代码,这是为了使我们的讨论更具普遍性)。在名称空间LevelOne中编写的代码可以直接使用NameOne来引用该名称,但全局名称空间中的代码必须使用限定名称LevelOne.NameOne来引用这个名称。
需要注意特别重要的一点:using语句本身不能访问另一个名称空间中的名称。除非名称空间中的代码以某种方式链接到项目上,或者代码是在该项目的源文件中定义的,或者是在链接到该项目的其他代码中定义的,否则就不能访问其中包含的名称。另外,如果包含名称空间的代码链接到项目上,那么无论是否使用using,都可以访问其中包含的名称。using语句便于我们访问这些名称,减少代码量,以及提高可读性。
回头分析开头的ConsoleApplication1中的代码,会看到下面这些被应用到名称空间上的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
...
}
以using关键字开头的5行代码声明在这段C#代码中使用System、System.Collections.Generic、System.Linq、System.Text和System.Threading.Tasks名称空间,它们可以在该文件的所有名称空间中访问,不必进行限定。System名称空间是.NET Framework应用程序的根名称空间,包含控制台应用程序需要的所有基本功能。其他4个名称空间常用于控制台应用程序,所以该程序包含了它们。最后,为应用程序代码本身声明一个名称空间ConsoleApplication1。
C# 6新增了using static关键字。这个关键字允许把静态成员直接包含到C#程序的作用域中。例如,之前两个示例都使用了System.Console静态类中的System.Console.WriteLine()方法。注意,在这些例子中,应包括Console类和WriteLine()方法。把using static System.Console添加到名称空间列表中时,访问WriteLine()方法就不再需要在前面加上静态类名。
之后需要System .Console静态类的代码示例就包括using static System.Console关键字。
示例
using System;
using static System.Console;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 录音
{
class Program
{
static void Main(string[] args)
{
WriteLine("你好");
ReadKey();
}
}
}