C# 嵌套 classes 与没有多态性的子 class 之间的区别

C# Difference between Nested classes vs child class without Polymorphism

假设 C2 是 C1,我需要 C2 可以访问 M1,而 C1 不能访问 M2。如果我不需要多态性,下面的代码是否会做与我在没有嵌套 类 的情况下做同样的事情完全相同的事情,而是使用继承?

class C1 {
  protected void M1() {
    \code
  class C2 {
  private void M2() {
      \code
     }
  }
}

您的初始示例在语法上不正确:

class C1 {
  protected void M1() {
    \code
  class C2 {
  private void M2() {
      \code
     }
  }
}

您不能在 M1 方法中定义 C2 class。


您在评论中提出的另一个问题(改写):

Why do we need nested classes at all?

a只能想出这样的案例:

    public class C1
    {
        public void M1()
        {
            Console.WriteLine($"{this.GetType()}.M1()");

            var c2 = new C2();
            c2.M2();
        }

        private class C2
        {
            public void M2()
            {
                Console.WriteLine($"{this.GetType()}.M2()");
            }
        }
    }

    public class Program
    {
        public static void Main(string[] args)
        {
            var c1 = new C1();
            c1.M1();
        }
    }

输出:

ClassesExample.C1.M1() ClassesExample.C1+C2.M2()

我们有一个私有 C2 class,只能从 C1 内部访问。我不知道我为什么要这样做。但是如果真的需要的话,那就是嵌套class.

的用法