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. Codeforces 1144G Two Merged Sequences

    题意: 将一个序列分成两个序列,两个序列中元素的相对顺序保持和原序列不变,使得分出的两个序列一个严格上升,一个严格下降. 思路: 我们考虑每个元素都要进入其中一个序列. 那么我们维护一个上升序列和一个 ...

  2. python 循环队列的实现

    最近在做一个东西的时候发现需要用到循环队列,实现先进先出(FIFO),不断往里面添加数据,当达到某个限定值时,最先进去的出去,然后再添加.之后需要对队列里面的内容进行一个筛选,作其他处理.首先我想到了 ...

  3. Django框架----基础

    一个小问题: 什么是根目录:就是没有路径,只有域名..url(r'^$') 补充一张关于wsgiref模块的图片 一.MTV模型 Django的MTV分别代表: Model(模型):和数据库相关的,负 ...

  4. 08: 查看Linux系统基本信息和硬盘CPU等

    目录: 1.1 查看Linux系统基本信息 1.2 查看三秒内的平均CPU 1.3 查看内存使用情况 1.4 查看当前系统负载 1.1 查看Linux系统基本信息返回顶部 1.查看Linux系统uui ...

  5. IDEA 插件-码云

    插件安装 最新插件版本: 2018.3.1.(2019-01-10 发布)注意:码云 IDEA 插件已由 gitosc 更名为 gitee.新版插件 gitee 菜单已经和 git 菜单合并 通过「插 ...

  6. AD快捷键

    * 在PCB电气层之间切换.在布线的过程中,按此键则换层并自动添加过孔并换层. Q 在公制和英制之间切换 J+C 定位到指定的元件处.在弹出的对话框内输入该元件的编号. G+G 设定栅格吸附尺寸. T ...

  7. JavaScript 开闭原则OCP

    代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3. ...

  8. Linux mysql 添加远程连接

    方法/步骤 第一步 远程连接上Linux系统,确保Linux系统已经安装上了MySQL数据库.登陆数据库. mysql -u$user -p $pwd 第二步 创建用户用来远程连接 GRANT ALL ...

  9. 【TCP/IP详解 卷一:协议】第二十一章 TCP的超时与重传

    作为TCP的重头戏,本章节涉及了许多关于计算方面的内容,使用了大量的例子来指明一些观点. 我使用的理解方法是:通过别人的博客,以及实例结合进行理解,不然会很吃力. 21.1 引言 reliable T ...

  10. UVa 10954 全部相加(Huffman编码)

    https://vjudge.net/problem/UVA-10954 题意:有n个数的集合S,每次可以从S中删除两个数,然后把它们的和放回集合,直到剩下一个数.每次操作的开销等于删除的两个数之和, ...