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

Ski*_*lGG 2 c#

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

        public class InsideClass 
        {
              public InsideClass() { }

              public void Call() { }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

像在c ++中一样,有一个.h文件在其中声明函数,.cpp函数的主体在哪里。

Oli*_*bes 10

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

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

public partial class Test
{
    public Test() { }

    public partial class InsideClass
    {
        public InsideClass() { }
        public void PublicMethod() => PrivateHelper();
    }
}
Run Code Online (Sandbox Code Playgroud)

Test.Implementation.cs你写

public partial class Test
{
    public partial class InsideClass
    {
        private void PrivateHelper() { }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

也可以看看:

  • @Tim可以通过部分方法*某种*,但是...从来没有人这样做,这使生活变得艰难-它们具有非常有限的功能,这意味着您最终不得不以神秘的方式公开它们 (3认同)