命名空间在C#中用于组织和提供一定程度的代码分离。可以将它们视为包含其他名称空间,类等的容器。
名称空间可以具有以下类型作为其成员:
- 命名空间(嵌套命名空间)
- 类
- 介面
- 结构体
- 代表
我们将在以后的教程中讨论这些主题。现在,我们将坚持使用类和名称空间。
命名空间在C#程序中不是必需的,但在编写更简洁的代码和管理较大的项目中,它们确实起着重要的作用。
让我们了解现实生活中的名称空间概念。我们的计算机中有大量文件和文件夹。想象一下,如果将它们放在一个目录中将很难管理它们。这就是为什么我们将相关文件和文件夹放在单独的目录中的原因。这有助于我们正确管理数据。
命名空间的概念在C#中类似。通过将相关成员放在同一命名空间中,它可以帮助我们组织不同的成员。
命名空间还解决了命名冲突的问题。当放在不同名称空间中的两个或多个类可以具有相同的名称。
在C#中定义命名空间
我们可以使用namespace关键字在C#中定义一个命名空间,如下所示:
namespace Namespace-Name
{
//Body of namespace
}
例如:
namespace MyNamespace
{
class MyClass
{
public void MyMethod()
{
System.Console.WriteLine("Creating my namespace");
}
}
}
在上面的示例中,创建了名称空间MyNamespace
。它由一个MyClass
类作为其成员。 MyMethod
是类MyClass
的方法。
在C#中访问命名空间的成员
可以使用dot(.)
运算符访问名称空间的成员。访问名称空间成员的语法是:
Namespace-Name.Member-Name
例如,如果我们需要创建一个MyClass对象,则可以这样做,
MyNamespace.MyClass myClass = new MyNamespace.MyClass();
我们将在后面的教程中讨论有关创建对象的信息。现在,仅关注如何访问MyClass
类。
示例1:在C#程序中引入命名空间
using System;
namespace MyNamespace
{
public class SampleClass
{
public static void myMethod()
{
Console.WriteLine("Creating my namespace");
}
}
}
namespace MyProgram
{
public class MyClass
{
public static void Main()
{
MyNamespace.SampleClass.myMethod();
}
}
}
当我们运行程序时,输出将是:
Creating my namespace
在上面的程序中,我们创建了自己的名称空间MyNamespace
并从MyClass
Main()
方法访问其成员。如前所述, dot (.)
运算符用于访问名称空间的成员 。
在Main()
方法中,使用dot (.)
运算符调用myMethod()
方法。
在C#中使用命名空间[使用关键字]
可以使用using关键字在程序中包含名称空间。语法是
using Namespace-Name;
例如,
using System;
这种方法的优点是,我们不必在每次访问该名称空间时都为其指定完全限定名称。
一旦行
using System;
包含在程序顶部。我们可以写
Console.WriteLine("Hello World!");
而不是全限定名称,即
System.Console.WriteLine("Hello World!");
C#中的嵌套命名空间
一个名称空间可以包含另一个名称空间。它称为嵌套名称空间。嵌套的名称空间及其成员也可以使用dot (.)
运算符进行访问。
创建嵌套名称空间的语法如下:
namespace MyNamespace
{
namespace NestedNamespace
{
// Body of nested namespace
}
}
示例2:C#中的嵌套命名空间
using System;
// Nested Namespace
namespace MyNamespace
{
namespace Nested
{
public class SampleClass
{
public static void myMethod()
{
Console.WriteLine("Nested Namespace Example");
}
}
}
}
namespace MyProgram
{
public class MyClass
{
public static void Main()
{
MyNamespace.Nested.SampleClass.myMethod();
}
}
}
当我们运行程序时,输出将是:
Nested Namespace Example
此示例说明了如何在C#中实现嵌套名称空间。
在这里,我们现在在MyNamespace
有一个名为Nested
的额外名称空间。因此,我们不必使用MyNamespace.SampleClass.myMethod()
,而必须使用MyNamespace.Nested.SampleClass.myMethod()
。