C#程序中,每提及一个“名称”,编译器就要对这个“名称”进行“决议(resolve)”;简言之,就是要让
这个“名称”可见(visible);
举例说明一下:
Console.WriteLine("Hello ,EdgarSun!");
此时编译器将无法对Console这一名称进行“决议”;using指令提供了一种解决方法,如using System;
便是告诉编译器到System命名空间中查找无法决议的“名称”;另一种做法是明确(全饰名称full qualified
name)告诉编译器到何处寻找这个“名称”,System.Console.WriteLine("Hello,EdgarSun!");
举一个简单的命名空间的例子:
namespace N1
{
public class A{…} //N1.A
}
namespace N2
{
public class A{…} //N2.A
}
类A定义于各自的命名空间(namespace),现在类A对整个程序来说不再是可见的了。而如若我们在程序
中同时“开启”(曝光expose)两个命名空间,那么unqulified name A将会导致编译错误。此时必须使用
“全饰名称”,如N2.A a;
另外,N1和N2可以相同,编译器认为我们想在原先存在的命名空间中加入新声明(declare);
还有一种方法是使用别名(alias);
namespace N3
{
using N1;
using N2;
using A1 = N1.A;
using A2 = N2.A;
class B
{
A1 a1;
A2 a2;
}
}
再补充一点,别名(alias)仅在当前的命名空间中有效。