# C# 编程中的命名空间

> 原文： [https://www.programiz.com/csharp-programming/namespaces](https://www.programiz.com/csharp-programming/namespaces)

#### 在本教程中，我们将学习命名空间，如何定义它，访问其成员以及在 C# 程序中使用它。

命名空间在 C# 中用于组织和提供一定程度的代码分离。 可以将它们视为包含其他名称空间，类等的容器。

名称空间可以具有以下类型作为其成员：

1.  命名空间（嵌套命名空间）
2.  班级
3.  介面
4.  结构体
5.  代表们

我们将在以后的教程中讨论这些主题。 现在，我们将坚持使用类和名称空间。

命名空间在 C# 程序中不是必需的，但在编写更简洁的代码和管理较大的项目中，它们确实起着重要的作用。

让我们了解实际场景中名称空间的概念。 我们的计算机中有大量文件和文件夹。 想象一下，如果将它们放在单个目录中将很难管理它们。 这就是为什么我们将相关文件和文件夹放在单独的目录中的原因。 这有助于我们正确管理数据。

命名空间的概念在 C# 中类似。 通过将相关成员放在同一名称空间中，它可以帮助我们**组织**不同的成员。

命名空间还解决了**命名冲突**的问题。 当放在不同名称空间中的两个或多个类可以具有相同的名称。

* * *

## 在 C# 中定义命名空间

我们可以使用*名称空间*关键字在 C# 中定义一个名称空间：

```cs
namespace Namespace-Name
{
    //Body of namespace
}

```

例如：

```cs
namespace MyNamespace
{
    class MyClass
    {
        public void MyMethod()
        {
            System.Console.WriteLine("Creating my namespace");
		}
	}
} 
```

在上面的示例中，创建了名称空间`MyNamespace`。 它由一个类`MyClass`作为其成员。`MyMethod`是`MyClass`类的方法。

* * *

## 在 C# 中访问命名空间的成员

可以使用`dot(.)`运算符访问名称空间的成员。 访问名称空间成员的语法是：

```cs
Namespace-Name.Member-Name
```

例如，如果我们需要创建一个`MyClass`对象，则可以这样做，

```cs
MyNamespace.MyClass myClass = new MyNamespace.MyClass();
```

我们将在后面的教程中讨论有关创建对象的信息。 现在，仅关注如何访问类`MyClass`。

* * *

## 示例 1：在 C# 程序中引入命名空间

```cs
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();
        }
    }
} 
```

当我们运行程序时，输出将是：

```cs
Creating my namespace
```

在上面的程序中，我们创建了自己的名称空间`MyNamespace`并从`MyClass`中的`Main()`方法访问其成员。 如前所述，`dot (.)`运算符用于访问名称空间的成员。

在`Main()`方法中，使用`dot (.)`运算符调用`myMethod()`方法。

* * *

## 在 C# 中使用命名空间【使用关键字】

可以使用`using`关键字在程序中包含名称空间。 语法是

```cs
using Namespace-Name;
```

例如，

```cs
using System;
```

这种方法的优点是，我们不必在每次访问该名称空间时都为其指定完全限定名称。

一旦行

```cs
using System;
```

包含在程序顶部。 我们可以写

```cs
Console.WriteLine("Hello World!");
```

而不是完全限定的名称，即

```cs
System.Console.WriteLine("Hello World!");
```

* * *

## C# 中的嵌套命名空间

一个名称空间可以包含另一个名称空间。 它称为嵌套名称空间。 嵌套的名称空间及其成员也可以使用`dot (.)`运算符进行访问。

创建嵌套名称空间的语法如下：

```cs
namespace MyNamespace
{
    namespace NestedNamespace
    {
        // Body of nested namespace
	}
}

```

* * *

### 示例 2：C# 中的嵌套命名空间

```cs
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();
        }
    }
} 
```

When we run the program, the output will be:

```cs
Nested Namespace Example
```

此示例说明了如何在 C# 中实现嵌套名称空间。

在这里，我们现在在`MyNamespace`内部有一个名为`Nested`的额外名称空间。 因此，我们不必使用`MyNamespace.SampleClass.myMethod()`，而必须使用`MyNamespace.Nested.SampleClass.myMethod()`。