示例详解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(...)
”。
请注意,两次出现的 Hello 是 arun.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 命名空间的成员声明中,A 是 N1.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#的命名空间的含义及使用。
相关文章
- 站长推荐