嵌套类与不具有多态性的子类之间的C#差异

KindaOk程序员

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

class C1 {
  protected void M1() {
    \\code
  class C2 {
  private void M2() {
      \\code
     }
  }
}
弗拉基米尔·塞里克(Vladimir Serykh)

您最初的示例在语法上是错误的:

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

您不能C2M1方法内部定义


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

为什么我们根本需要嵌套类?

一个唯一可以想到的就是这种情况:

    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类,只能从内部访问C1我不知道为什么要这么做。但是,如果真的需要,那就是嵌套类的用法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章