技术频道导航
HTML/CSS
.NET技术
IIS技术
PHP技术
Js/JQuery
Photoshop
Fireworks
服务器技术
操作系统
网站运营

赞助商

分类目录

赞助商

最新文章

搜索

示例详解C#命名空间的定义、using指令、嵌套、别名等用法

作者:admin    时间:2023-4-26 14:11:11    浏览:

在本文中,将介绍 C# 命名空间,教你如何使用“using”指令,以及教你如何使用“别名”指令等。

 

如何定义命名空间

命名空间在管理 C# 中的相关类方面起着重要作用。.NET Framework 使用命名空间来组织其内置类。例如.NET中有一些内置的命名空间,如System、System.Linq、System.Web等,每个命名空间都包含相关的类。

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

namespace namespace_name {
   // code declarations
}

要调用函数或变量的启用命名空间的版本,请在命名空间名称前添加如下:

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 namespace 指令在名称空间前添加。该指令告诉编译器后续代码正在使用指定命名空间中的名称。因此,命名空间隐含在以下代码中。

下面我们用 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

下面一个例子,我们将编写一个使用 Hello 类的控制台应用程序,我们可以只使用 class-arun.CSharp.Namespaces.Hello 的完全限定名称,但这个名称非常长且笨拙。一种更简单的方法是使用“using”指令,这使得无需限定即可使用名称空间中的所有类型。如果你想在不键入完全限定名称的情况下调用方法,你可以实现“using”指令。

using sysem;  
using arun.CSharp.Namespaces;  
class Hello {  
    static void Main() {  
        Hello m = new Hello();  
        System.Console.WriteLine(m.GetMessage());  
    }  

using System”允许你键入“System”命名空间成员的方法名称,而无需每次都键入“System”一词。在 Hello() 类中,“Console”是“System”命名空间的类成员,方法是“WriteLine”。它的完全限定名称是“System.Console.WriteLine(...)”。

请注意,两次出现的 Helloarun.CSharp.Namespaces.Hello 的简写。

如何使用别名指令

C# 还支持别名的定义和使用。在两个库之间发生名称冲突的情况下,或者在使用来自更大名称空间的少量类型时,此类别名可能很有用。

using-alias-directive 引入了一个标识符,作为紧邻的编译单元或命名空间主体中的命名空间或类型的别名。

using identifier = namespace-or-type-name ;  

在包含 using-alias-directive 的编译单元或命名空间主体中的成员声明中,using-alias-directive 引入的标识符可用于引用给定的命名空间或类型。

例如

namespace N1.N2 {  
    class A {}  
}  
namespace N3 {  
    using A = N1.N2.A;  
    class B: A {}  

这里,在 N3 命名空间的成员声明中,AN1.N2.A 的别名,因此类 N3.B 派生自类 N1.N2.A。为N1.N2创建一个别名R,然后引用RA,也可以获得相同的效果。

namespace N3 {  
    using R = N1.N2;  
    class B: R.A {}  

using-alias-directive 的标识符在直接包含 using-alias-directive 的编译单元或命名空间的声明空间内必须是唯一的。

如何嵌套命名空间

你可以在另一个命名空间内定义一个命名空间,如下所示。

namespace namespace_name1 {
   
   // code declarations
   namespace namespace_name2 {
      // code declarations
   }
}

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

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

总结

本文通过示例介绍了C#命名空间的一些基础知识,它可以帮助你更加了解C#的命名空间的含义及使用。

相关文章

标签: CSharp  asp.net  aspx  命名空间  
x
  • 站长推荐
/* 左侧显示文章内容目录 */