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. STA分析(七) sdc

    STA分析前的环境设置,包括:setup clocks,specifying IO characteristics 1)定义一个master clock:create_clock -name .. - ...

  2. Zooming

    Zooming 是一款纯 javascript 图片缩放库,主要特点有: 不依赖其他库,纯 JavaScript 实现,支持移动设备: 流畅的动画: 可缩放高清图像: 易于集成和定制. 使用方法 1. ...

  3. innob and myisam存储引擎分析

    首次啊对比一下两者的区别: MyISAM   InnoDB   构成上的区别:   每个MyISAM在磁盘上存储成三个文件.第一个文件的名字以表的名字开始,扩展名指出文件类型. .frm文件存储表定义 ...

  4. 植物大战僵尸作弊器源代码(MFC版)

    控制版使用不太方便,此MFC版与控制台版内容一样.具体可以参考前面.此处只附源代码,不加以说明.......... 头文件 // jsMFCDlg.h : 头文件 // #pragma once // ...

  5. POJ 1836

    刚开始二分写错了 wa了很久 这个二分 的好好想想 #include <iostream> #include<cstdio> #include<string.h> ...

  6. redis安装及注意事项

    在linux中使用wget时,若报-bash: wget: command not found,则表明没有安装wget,需要安装,安装命令如下: yum -y install wget 安装完成即可以 ...

  7. Python安装selenium,配置火狐浏览器环境

    想用Python去编写自动化脚本进行网页访问时,遇到了一些问题, File "C:\Python34\lib\site-packages\selenium-3.0.0b2-py3.4.egg ...

  8. ACM题目————STL + 全排列

    今天碰到一个函数,感觉挺好用的,全排列函数 next_permutation! 求全排列的函数,基本上与自己写的DFS时间复杂度差不多,毕竟是标准库.(2018-1-4 添加) 话不多说,直接上题. ...

  9. Linux学习笔记之Centos7安装GNOME桌面环境

    最小化安装Centos7,系统默认是命令行界面,如果像我一样有特殊需求,这时就需要我们手动来安装用户图形界面了. 1.查看一下当前的运行级别和可以安装的group. systemctl get-def ...

  10. django session 使用案例

    django session 使用案例 HTTP被设计为”无状态”,每次请求都处于相同的空间中. 在一次请求和下一次请求之间没有任何状态保持,我们无法根据请求的任何方面(IP地址,用户代理等)来识别来 ...