C# 命名空间(Namespace)

  命名空间的设计目的是为了提供一种让一组名称与其他名称分隔开的方式。在一个命名空间中声明的类的名称与另一个命名空间中声明的相同的类的名称不冲突。

  定义命名空间

  命名空间的定义是以关键字 namespace 开始,后跟命名空间的名称,如下所示:

  namespace namespace_name

  {

  // 代码声明

  }

  为了调用支持命名空间版本的函数或变量,会把命名空间的名称置于前面,如下所示:

  namespace_name.item_name;

  下面的程序演示了命名空间的用法:

  using System;

  namespace first_space

  {

  class namespace_cl

  {

  public void func()

  {

  Console.WriteLine("Inside first_space");

  }

  }

  }

  namespace second_space

  {

  class namespace_cl

  {

  public void func()

  {

  Console.WriteLine("Inside second_space");

  }

  }

  }

  class TestClass

  {

  static void Main(string[] args)

  {

  first_space.namespace_cl fc = new first_space.namespace_cl();

  second_space.namespace_cl sc = new second_space.namespace_cl();

  fc.func();

  sc.func();

  Console.ReadKey();

  }

  }

  当上面的代码被编译和执行时,它会产生下列结果:

  Inside first_space

  Inside second_space

  using 关键字

  using 关键字表明程序使用的是给定命名空间中的名称。例如,我们在程序中使用 System 命名空间,其中定义了类 Console。我们可以只写:

  Console.WriteLine ("Hello there");

  我们可以写完全限定名称,如下:

  System.Console.WriteLine("Hello there");

  您也可以使用 using 命名空间指令,这样在使用的时候就不用在前面加上命名空间名称。该指令告诉编译器随后的代码使用了指定命名空间中的名称。下面的代码延时了命名空间的应用。

  让我们使用 using 指定重写上面的实例:

  using System;

  using first_space;

  using second_space;

  namespace first_space

  {

  class abc

  {

  public void func()

  {

  Console.WriteLine("Inside first_space");

  }

  }

  }

  namespace second_space

  {

  class efg

  {

  public void func()

  {

  Console.WriteLine("Inside second_space");

  }

  }

  }

  class TestClass

  {

  static void Main(string[] args)

  {

  abc fc = new abc();

  efg sc = new efg();

  fc.func();

  sc.func();

  Console.ReadKey();

  }

  }

  当上面的代码被编译和执行时,它会产生下列结果:

  Inside first_space

  Inside second_space

  嵌套命名空间

  命名空间可以被嵌套,即您可以在一个命名空间内定义另一个命名空间,如下所示:

  namespace namespace_name1

  {

  // 代码声明

  namespace namespace_name2

  {

  // 代码声明

  }

  }

  您可以使用点(.)运算符访问嵌套的命名空间的成员,如下所示:

  using System;

  using first_space;

  using first_space.second_space;

  namespace first_space

  {

  class abc

  {

  public void func()

  {

  Console.WriteLine("Inside first_space");

  }

  }

  namespace second_space

  {

  class efg

  {

  public void func()

  {

  Console.WriteLine("Inside second_space");

  }

  }

  }

  }

  class TestClass

  {

  static void Main(string[] args)

  {

  abc fc = new abc();

  efg sc = new efg();

  fc.func();

  sc.func();

  Console.ReadKey();

  }

  }

  当上面的代码被编译和执行时,它会产生下列结果:

  Inside first_space

  Inside second_space

  本文转载自:w3cschool(编辑:雷林鹏 来源:网络)

雷林鹏分享:C# 命名空间(Namespace)的更多相关文章

  1. 雷林鹏分享:XML 命名空间

    XML 命名空间 XML 命名空间提供避免元素命名冲突的方法. 命名冲突 在 XML 中,元素名称是由开发者定义的,当两个不同的文档使用相同的元素名时,就会发生命名冲突. 这个 XML 携带 HTML ...

  2. 雷林鹏分享:C# 程序结构

    C# 程序结构 在我们学习 C# 编程语言的基础构件块之前,让我们先看一下 C# 的最小的程序结构,以便作为接下来章节的参考. C# Hello World 实例 一个 C# 程序主要包括以下部分: ...

  3. 雷林鹏分享:C# 基本语法

    C# 基本语法 C# 是一种面向对象的编程语言.在面向对象的程序设计方法中,程序由各种相互交互的对象组成.相同种类的对象通常具有相同的类型,或者说,是在相同的 class 中. 例如,以 Rectan ...

  4. 雷林鹏分享:C# 变量

    C# 变量 一个变量只不过是一个供程序操作的存储区的名字.在 C# 中,每个变量都有一个特定的类型,类型决定了变量的内存大小和布局.范围内的值可以存储在内存中,可以对变量进行一系列操作. 我们已经讨论 ...

  5. 雷林鹏分享:C# 数组(Array)

    C# 数组(Array) 数组是一个存储相同类型元素的固定大小的顺序集合.数组是用来存储数据的集合,通常认为数组是一个同一类型变量的集合. 声明数组变量并不是声明 number0.number1... ...

  6. 雷林鹏分享:C# 文件的输入与输出

    C# 文件的输入与输出 一个 文件 是一个存储在磁盘中带有指定名称和目录路径的数据集合.当打开文件进行读写时,它变成一个 流. 从根本上说,流是通过通信路径传递的字节序列.有两个主要的流:输入流 和 ...

  7. 雷林鹏分享:C# 反射(Reflection)

    C# 反射(Reflection) 反射(Reflection) 对象用于在运行时获取类型信息.该类位于 System.Reflection 命名空间中,可访问一个正在运行的程序的元数据. Syste ...

  8. 雷林鹏分享:C# 泛型(Generic)

    C# 泛型(Generic) 泛型(Generic) 允许您延迟编写类或方法中的编程元素的数据类型的规范,直到实际在程序中使用它的时候.换句话说,泛型允许您编写一个可以与任何数据类型一起工作的类或方法 ...

  9. 雷林鹏分享:Ruby Web Services 应用 - SOAP4R

    Ruby Web Services 应用 - SOAP4R 什么是 SOAP? 简单对象访问协议(SOAP,全写为Simple Object Access Protocol)是交换数据的一种协议规范. ...

随机推荐

  1. UVM中的regmodel建模(三)

    总结一下UVM中的寄存器访问实现: 后门访问通过add_hdl_path命令来添加寄存器路径,并扩展uvm_reg_backdoor基类,定义read与write函数,最后在uvm_reg_block ...

  2. zw版【转发·台湾nvp系列Delphi例程】HALCON FastThreshold2

    zw版[转发·台湾nvp系列Delphi例程]HALCON FastThreshold2 FastThreshold_Delphi_2.PNG procedure TForm1.Button1Clic ...

  3. za

    http://www.szjs.gov.cn/bsfw/zdyw_1/zfbz/jgcx/

  4. 基于Axis1.4的webservice接口开发(环境搭建)

    基于Axis1.4的webservice接口开发(环境搭建) 一.环境搭建: 1.搜索关键字“Axis1.4”下载Axis1.4相关的jar包. 下载地址:http://download.csdn.n ...

  5. Spring,Struts2,MyBatis,Activiti,Maven,H2,Tomcat集成(三)——H2,MyBatis集成

    1.配置h2,连接池,MyBatis Maven依赖: <!-- spring与数据库访问集成(非Hibernate) --> <dependency> <groupId ...

  6. 出现“基础链接已关闭,无法链接到远程服务器"错误的解决办法

    一些用户在安装一些软件或是系统做某些修改后,采集器就没无登录或是无法获取到网页.登录或是使用httppostget工具会出现 ”基础链接已关闭,无法链接到远程服务器“的提示.经分析,是系统Socket ...

  7. Centos7.5 安装Netdata

    切为root, yum install zlib-devel gcc make git autoconf autogen guile-devel automake pkgconfig -y yum i ...

  8. SQL去重之distinct和group by的应用

    遇到一个需求,要去重查出某张表的字段一和字段二,但是查出来的结果要按照表中记录的创建时间排序. 于是,第一时间就想到了使用distinct这个去重专用语法了: select distinct col1 ...

  9. Python3.x:关于urllib中urlopen报错问题的解决方案

    Python3.x:关于urllib中urlopen报错问题的解决方案 调用:urllib.urlopen(url) 报错:AttributeError: 'module' object has no ...

  10. git2

    1,开源的代码管理工具 2,分布式管理工具(更安全,可以脱网操作) 3,git的分支管理更加便捷. 4,代码的传输更新速度更快 利用git可以进入多人配合代码开发.有备份.协同 sudo apt-ge ...