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. EditPlus 4.3.2583 中文版已经发布

    新的版本提升了括号匹配的性能.请点击页面左上角连接下载.

  2. 错误处理:WebForms UnobtrusiveValidationMode 需要“jquery”ScriptResourceMapping

    今天在配置用户权限管理的时候,遇到了这么个错误: WebForms UnobtrusiveValidationMode 需要“jquery”ScriptResourceMapping.请添加一个名为 ...

  3. vue 渲染页面的时候 出现闪烁问题的解决办法

    在使用vue绑定数据的时候,渲染页面时会出现变量闪烁 <div id="h_cameraman" v-cloak> <public-nav> {{ msg ...

  4. centos7源码编译安装Subversion 1.9.5

    svn是Subversion的简称,是一个开放源代码的版本控制系统.svn有两种运行方式:1.独立服务器(svn://xxx.xxx/xxx) 2.借助apache(http://svn.xxx.xx ...

  5. Nginx 灰度实现方式(支持纯灰度,纯生产,50度灰及更多比例配置)

    前言 Nginx相关技术短信本篇幅不做详细介绍,所以学习本文之前要对Nginx有相关的了解. 生产环境即线上环境,在经历开发.测试再到上线,不可避免的会更新生产环境,但谁又能保证测试过的代码到线上运行 ...

  6. 使用wireshark分析tcp/ip报文之报文头

    以太网报文的结构如下: 其中,以太网的帧头: 14 Bytes:MAC目的地址48bit(6B),MAC源地址48bit(6B),Type域2B,一共14B. IP头部: TCP头部: http:// ...

  7. redhat6.4 elasticsearch1.7.3安装配置

    利用elasticsearch管理集群索引, 今天刚好需要重新调整elasticsearch的最大内存, 所以自己安装了练手 附件: elasticsearch 附件:elasticsearch-he ...

  8. 20145317彭垚 MSF基础应用

    20145317彭垚 MSF基础应用 基础问题回答 用自己的话解释什么是exploit,payload,encode? exploit就相当于是载具,将真正要负责攻击的代码传送到靶机中,我觉得老师上课 ...

  9. 20145321《网络对抗技术》逆向与Bof基础

    20145321<网络对抗技术>逆向与Bof基础 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何 ...

  10. python字符串格式化之format

    用法: 它通过{}和:来代替传统%方式 1.使用位置参数 要点:从以下例子可以看出位置参数不受顺序约束,且可以为{},只要format里有相对应的参数值即可,参数索引从0开,传入位置参数列表可用*列表 ...