相关疑难解决方法(0)

c#中的Java内部类

我有以下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# java inner-classes

14
推荐指数
3
解决办法
3206
查看次数

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#中使用相同的功能吗?

c#

5
推荐指数
1
解决办法
8448
查看次数

Java:变量"this"何时初始化?

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方法创建另一个类并将该类设置为主类,那么它是一个更好的编程实践吗?

java constructor this static-members

0
推荐指数
1
解决办法
218
查看次数

标签 统计

c# ×2

java ×2

constructor ×1

inner-classes ×1

static-members ×1

this ×1