C#名称空间

来源:互联网 发布:linq for sql 编辑:程序博客网 时间:2024/06/15 06:37
C#代码默认在全局名称空间中,对于包含在限定名称空间代码块中的项,全局名称空间中的其他代码可以按照名称进行引用访问它们.


使用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 显示:王五




原创粉丝点击