C#代码默认在全局名称空间中,对于包含在限定名称空间代码块中的项,全局名称空间中的其他代码可以按照名称进行引用访问它们.
使用namespace显式定义名称空间的说明:
1.在名称空间花括号的外部使用该名称空间中的名称,必须写出该名称空间中的限定名称.
2.限定名称包括它所有的分层信息,在不同的命名空间级别之间使用句点字符(.).名称是由名称空间唯一定义的,可独立使用它们,互不干扰.
3.根据约定,名称空间采用PascalCase命名方式.
4.namespace还可以定义嵌套的名称空间,通过其层次结构来引用,并使用句点区分层次结构.
5.可使用using语句简化对所包含名称空间的引用.
6.不同名称空间中的相同名称会产生冲突,可使用using语句为名称空间定义一个别名.
注意:using语句本身不能访问另一个名称空间中的名称.
使用需满足以下条件,否则不能访问其中包含的名称:
1.名称空间中的代码以某种方式链接到项目上.
2.代码是在该项目的源文件中定义的.
3.在链接到该项目的其他代码中定义的.
LT.A.name1 显示:张三
A.name1 显示:王五
使用namespace显式定义名称空间的说明:
1.在名称空间花括号的外部使用该名称空间中的名称,必须写出该名称空间中的限定名称.
2.限定名称包括它所有的分层信息,在不同的命名空间级别之间使用句点字符(.).名称是由名称空间唯一定义的,可独立使用它们,互不干扰.
3.根据约定,名称空间采用PascalCase命名方式.
4.namespace还可以定义嵌套的名称空间,通过其层次结构来引用,并使用句点区分层次结构.
5.可使用using语句简化对所包含名称空间的引用.
6.不同名称空间中的相同名称会产生冲突,可使用using语句为名称空间定义一个别名.
注意:using语句本身不能访问另一个名称空间中的名称.
使用需满足以下条件,否则不能访问其中包含的名称:
1.名称空间中的代码以某种方式链接到项目上.
2.代码是在该项目的源文件中定义的.
3.在链接到该项目的其他代码中定义的.
using语句只是便于我们访问这些名称,减少代码量,提高可读性.
//定义名称空间
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace lever1
{
class A
{
static public string name1 = "张三";
public string Name
{
get { return name1; }
}
}
namespace lever2
{
class A
{
static public string name1 = "李四"; //与lever1.A.name1互不干扰
public string Name
{
get { return name1; }
set { name1 = this.Name; }
}
}
}
}
以下代码测试1,2,4
class Program
{
static void Main(string[] args)
{
Console.WriteLine("lever1.A.name1 显示:{0}", lever1.A.name1);
lever1.lever2.A.name1 = "王五";
Console.WriteLine("lever1.lever2.A.name2 显示:{0}", lever1.lever2.A.name1);//名称相同,以名称空间的层次来区分
}
}
输出:
lever1.A.name1 显示:张三
lever1.lever2.A.name2 显示:王五
以下代码测试5,6
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using lever1;//使用using包含名称空间,可简化调用
namespace ConsoleApplication1
{
using LT = lever1;//由于名称空间冲突,使用using为名称空间定义一个别名.
//定义在此处,全局名称空间不能使用别名
class Class1
{
static void Main(string[] args)
{
Console.WriteLine("LT.A.name1 显示:{0}", LT.A.name1);
A.name1 = "王五";
Console.WriteLine("A.name1 显示:{0}", A.name1);
}
}
}
LT.A.name1 显示:张三
A.name1 显示:王五