是否可以在C#中的声明之外的其他文件中的其他类的主体内部创建类?

时间:2019-07-12 15:37:56

标签: c#

namespace Program 
{
    class Test 
    {
        public Test() { }

        public class InsideClass 
        {
              public InsideClass() { }

              public void Call() { }
        }
    }
}

是否可以将Program::Test::InsideClass:: Call的正文写入同一测试以外的其他文件中。

就像在c ++中一样,在.h文件中声明了函数,在.cpp中声明了函数的主体。

2 个答案:

答案 0 :(得分:10)

与C ++不同,C#不会将声明与实现分开。没有与.h文件可比的文件。主要原因是.NET DLL文件中的元数据包含C ++头文件中的信息。通过引用C#项目中的DLL替换了C ++ #include。另外,您可以使用using语句有选择地导入名称空间。但是名称空间没有物理影响。它们只是组织代码和避免命名冲突的一种方式。

但是您可以在C#中创建部分类。这使您可以将私有帮助器方法移至另一个文件。在Test.cs中写

public partial class Test
{
    public Test() { }

    public partial class InsideClass
    {
        public InsideClass() { }
        public void PublicMethod() => PrivateHelper();
    }
}

您在Test.Implementation.cs中写

public partial class Test
{
    public partial class InsideClass
    {
        private void PrivateHelper() { }
    }
}

WinForms设计器使用局部类将设计器生成的代码(myForm.designer.cs)与您的背后代码(myForm.cs)分开。

即使使用嵌套类,也可以执行此操作。请注意,即使周围的类不是嵌套类,它也可以是局部的。 (但是然后它们显然不能放在不同的文件中。)

在Visual Studio中,您还可以使用类视图来显示代码的逻辑结构,而不是像解决方案资源管理器那样显示物理结构。对象浏览器是另一个有用的视图。

另请参阅:

答案 1 :(得分:-1)

我建议您创建局部类以完成您想要的工作。

https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/partial-classes-and-methods

第一个文件:

['*']

第二个文件:

public partial class Employee
{
    public void DoWork()
    {
    }
}