我有以下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#编程时通常如何实现类似的效果?
如何在c#中实现内部外部类
我有两个嵌套类
喜欢
class Outer
{
int TestVariable = 0;
class Inner
{
int InnerTestVariable = TestVariable // Need to access the variable "TestVariable" here
}
}
Run Code Online (Sandbox Code Playgroud)
它在编译时显示错误.
它可以解决
1)使TestVariable成为静态的
2)将外类的实例传递给Inner类
但是在java中,不需要创建Instance或static.
我可以在C#中使用相同的功能吗?
public class MainMDI extends javax.swing.JFrame {
private static MainMDI thiz;
public MainMDI() {
initComponents();
thiz = this;
}
}
Run Code Online (Sandbox Code Playgroud)
我正在创建一个MDI应用程序.MainMDI类是应用程序的主类,因此main方法驻留在该类中.上面的代码创建了一个名为thiz的静态变量,该变量在应用程序运行时指向MainMDI类的实例.
我打算使用变量thiz从main方法中访问类MainMDI的非静态(实例)成员.(我无法从main方法中访问非静态成员,因为main方法是类中的静态成员我的应用程序中的MainMDI).
public class MainMDI extends javax.swing.JFrame {
private static MainMDI thiz = this;
public MainMDI() {
initComponents();
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试初始化变量thiz时,如上面的代码,编译器说非静态变量,这不能从静态上下文引用.但我不是在静态环境中提到这个,不是吗?这是因为变量this(非静态的)在静态变量初始化时尚未初始化吗?
另外,如果我没有将类MainMDI设置为主类并使用main方法创建另一个类并将该类设置为主类,那么它是一个更好的编程实践吗?