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 SomeNameSpace;
using SomeNameSpace.Nested;

namespace SomeNameSpace
{
  public class MyClass
  {
    static void Main()
    {
      Console.WriteLine("In SomeNameSpace");
      Nested.NestedNameSpaceClass.SayHello();
    }
  }

  // 内嵌命名空间
  namespace Nested
  {
    public class NestedNameSpaceClass
    {
      public static void SayHello()
      {
        Console.WriteLine("In Nested");
      }
    }
  }
}

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

In SomeNameSpace
In Nested

以上就是C# 命名空间(Namespace)相关知识总结的详细内容,更多关于C# 命名空间(Namespace)的资料请关注我们其它相关文章!

(0)

相关推荐

  • c# 命名空间和程序集

    使用类的全权名: System.Text.StringBuilder sb = new System.Text.StringBuilder(); 上面的写法很繁琐,使用using语句引入命名空间: using System.Text; StringBuilder sb = new StringBuilder(); 对于编译器来说,命名空间就是为一个类型附加一些分隔符号,使名称更有唯一性. c#的using指令是可选的,完全可以用类型的完整名称代替,c# 的using指令时指示编译器为 每一个类型

  • C#命名空间与java包的区别分析

    本文实例分析了C#命名空间与java包的区别.分享给大家供大家参考.具体分析如下: 相同点: 1.都是为了重用性(reusebility)--软件工程中一个非常重要的目标. 2.C#里面的命名空间和java中的包都属于访问权限的控制机制. 不同点: 1.C#命名空间只是一种逻辑上的结构,它允许所组织的类文件的物理存放位置与逻辑结构不一致,而Java中类文件的物理结构必须与逻辑结构一致. 2.Java的package本身没有子包的概念,所有package都是并列的关系,没有谁包含谁的问题.比如:o

  • C# 命名空间(Namespace)相关知识总结

    命名空间的设计目的是提供一种让一组名称与其他名称分隔开的方式.在一个命名空间中声明的类的名称与另一个命名空间中声明的相同的类的名称不冲突. 我们举一个计算机系统中的例子,一个文件夹(目录)中可以包含多个文件夹,每个文件夹中不能有相同的文件名,但不同文件夹中的文件可以重名. 定义命名空间 命名空间的定义是以关键字 namespace 开始,后跟命名空间的名称,如下所示: namespace namespace_name { // 代码声明 } 为了调用支持命名空间版本的函数或变量,会把命名空间的名

  • PHP命名空间namespace用法实例分析

    本文实例讲述了PHP命名空间namespace用法.分享给大家供大家参考,具体如下: namespace(命名空间)相当于函数.类,划分了一个区域,这样子就使得在同个页面中可以require相同的类,使用相同名字的函数 : 在项目中比较少用 name.php: <?php //命名要使用复合名称 namespace me\mine; class me{ public function __construct(){ echo 'name'.'<br>'; } public function

  • PHP命名空间namespace的定义方法详解

    本文实例讲述了PHP命名空间namespace的定义方法.分享给大家供大家参考,具体如下: 定义命名空间 对于空间的命名,在此我想不用文字解释,更好的解释是用实例来证明: For example: 下面这段代码是"test.php"里面的文件: namespace Test; class Test{ public function Ttest(){ echo "这是Test里面的测试方法"."<br>"; } } 接下来我将用三种不同

  • PHP命名空间namespace定义及导入use用法详解

    本文实例讲述了PHP命名空间namespace定义及导入use用法.分享给大家供大家参考,具体如下: 在PHP中,出现同名函数或是同名类是不被允许的.为防止编程人员在项目中定义的类名或函数名出现重复冲突,在PHP5.3中引入了命名空间这一概念. 1.命名空间,即将代码划分成不同空间,不同空间的类名相互独立,互不冲突.一个php文件中可以存在多个命名空间,第一个命名空间前不能有任何代码.内容空间声明后的代码便属于这个命名空间,例如: <?php echo 111; //由于namespace前有代

  • PHP命名空间namespace及use的简单用法分析

    本文实例讲述了PHP命名空间namespace及use的简单用法.分享给大家供大家参考,具体如下: 最近一段时间在研究php框架,一直想的什么时候才能开发出自己的框架,当然这是为了提升自己的编程水平,同时能把平时学的零散的东西糅合在一块熟练应用.但是开发一个框架根本不知道如何做起,先开发什么,虽然php的框架也不少,但是都是如何应用,没有文档和视频可以学习,这是让我特别郁闷的事情,相信不少想自己开发框架玩的小伙伴都有类似的感受,郁闷归郁闷,自己还是动手做了,做的时候困难和想象的一样难,从一开始就

  • php 命名空间(namespace)原理与用法实例小结

    本文实例讲述了php 命名空间(namespace)原理与用法.分享给大家供大家参考,具体如下: 命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误.这种情况下只要避免命名重复就可以解决,最常见的一种做法是约定一个前缀,也可以采用命名空间的方式解决 TestSpace.php <?php namespace Demo\Test; //声明一个命名空间Demo class Test1 { static function test() {

  • 图解python全局变量与局部变量相关知识

    这篇文章主要介绍了图解python全局变量与局部变量相关知识,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 了解全局变量和局部变量之前,我们先来了解一下作用域 a = 10 def func(): b = 20 def inner(): c = 30 以上面这个程序为例:打印a,b,c 可以看到只有a打印 10 ,b和c都报错,这就是作用域的问题. 我们把新创建的一个.py文件看做事一个模块,在模块内定义的变量,如a,就是这个模块的全局变量,作

  • PHP命名空间(namespace)原理与用法详解

    本文实例讲述了PHP命名空间(namespace)原理与用法.分享给大家供大家参考,具体如下: PHP 命名空间(namespace)是在PHP 5.3中加入的,它可以解决以下两类问题: 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突. 为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性. 我们在默认情况下,所有常量.类和函数名都放在全局空间下,就和PHP支持命名空间之前一样,命名空间通过关键字namespace

  • C 语言关于联合体的相关知识

    当多个数据需要共享内存或者多个数据每次只取其一时,可以利用联合体(union).在C Programming Language 一书中对于联合体是这么描述的: 1)联合体是一个结构: 2)它的所有成员相对于基地址的偏移量都为0: 3)此结构空间要大到足够容纳最"宽"的成员: 4)其对齐方式要适合其中所有的成员: 下面解释这四条描述: 由于联合体中的所有成员是共享一段内存的,因此每个成员的存放首地址相对于于联合体变量的基地址的偏移量为0,即所有成员的首地址都是一样的.为了使得所有成员能够

  • Python基础之模块相关知识总结

    一.什么是模块 容器 -> 数据的封装 函数 -> 语句的封装 类 -> 方法和属性的封装 模块 -> 模块就是程序,模块就是.py文件 导入hello模块,且使用hello命名空间的hi()函数 (1)hello.py模块的创建 注意模块与调用的程序要在同一个文件夹下面 import的时候直接写名字就行了,不用加上.py,eg:hello.py,hello就是模块名 (2)执行 命名空间 在Python中,每个模块都会维护一个独立的命名空间,我们应该将模块名加上,才能够正常使用模

随机推荐