dev*_*ium 14 c# java inner-classes
我有以下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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
产生666和999.现在,我已经尝试在c#中设置类似的代码,但似乎无法实现相同的功能.如果是这种情况,在c#编程时通常如何实现类似的效果?
SLa*_*aks 25
您需要使内部类将外部类的实例作为构造函数参数.(这是Java编译器实现内部类的方式)
从 Java 的角度来看,C# 内部类就像 Java 嵌套类(如果public static class B在代码中声明,就会得到什么)。
不同的原因是 C# 支持委托,它取代了 Java 内部类的主要用例。一旦委托在语言中,C# 的设计者就觉得没有必要在内部类和嵌套类之间添加区别。