【发布时间】:2021-04-27 10:25:35
【问题描述】:
我正在阅读一本书,其中显示了以下示例:
假设您正在开发一个名为 Square 的几何类集合, 圆形和六边形。鉴于它们的相似性,您希望将它们组合到 CustomNamespaces.exe 程序集中称为 MyShapes 的唯一命名空间中。您有两种基本方法。首先,您可以选择在单个 C# 文件 (ShapesLib.cs) 中定义所有类,如下所示:
// ShapesLib.cs
using System;
namespace MyShapes
{
public class Circle { /* Interesting members... */ }
public class Hexagon { /* More interesting members... */ }
public class Square { /* Even more interesting members... */ }
}
虽然 C# 编译器对包含多种类型的单个 C# 代码文件没有任何问题,但当您想在新项目中重用类定义时,这可能会很麻烦。例如,假设您正在构建一个新项目,并且只需要使用 Circle 类。如果所有类型都定义在一个代码文件中,那么您或多或少会被整个集合所困扰。因此,作为替代方案,您可以将单个命名空间拆分为多个 C# 文件。
// Circle.cs
using System;
namespace MyShapes
{
public class Circle { /* Interesting methods... */ }
}
// Hexagon.cs
using System;
namespace MyShapes
{
public class Hexagon { /* More interesting methods... */ }
}
// Square.cs
using System;
namespace MyShapes
{
public class Square { /* Even more interesting methods... */ }
}
我不太明白,在新项目中重用类定义是什么意思?在这两种情况下,当你想在其他项目中使用Circle类时,你需要显式使用MyShapes.Circle c = new Circle()或者使用using MyShapes; Circle c = new Circle();,所以“在单个C#文件中定义所有类”和“在单个C#文件中定义所有类”之间真的没有区别跨多个 C# 文件拆分单个命名空间”?
【问题讨论】:
-
您可以将一个命名空间拆分到多个 C# 文件中。” 这本书是什么?这听起来很奇怪。同一文件夹中的类 - 按照惯例 - 共享相同的命名空间。
-
更重要的是,您可以将命名空间拆分(传播)到多个程序集。