c 中的 Java 内部类#

2022-09-03 03:41:32

我有以下Java代码:

public class A {
    private int var_a = 666;

    public A() {
        B b = new B();
        b.method123();
        System.out.println(b.var_b);
    }

    public class B {
        private int var_b = 999;

        public void method123() {
            System.out.println(A.this.var_a);           
        }
    }
}

生成 666 和 999。现在,我尝试在c#中设置类似的代码,但似乎不可能完成相同的操作。如果是这样的话,在用c#编程时,你通常如何达到类似的效果?


答案 1

您需要使内部类将外部类的实例作为构造函数参数。(这是Java编译器实现内部类的方式)


答案 2

内部类在 C# 和 Java 之间的处理方式略有不同。Java 将对外部类实例的引用隐式传递给内部类,从而允许内部类访问外部类的字段。要在C#中获得类似的功能,你只需要显式地执行Java隐式执行的操作。

有关详细信息,请查看本文


推荐