[编辑]我想问的只是放一个类名this,所以它不是引用一个外部类成员.对不起我的不恰当的例子!
[编辑2]有人报告这是重复但不!正如我之前所说,我只是想知道是否有可能像Java一样引用MyClass.this和this互换.这根本不是一个实际问题,只是为了学习C#语言本身.我不介意删除这个,如果人们真的认为它是重复的,所以让我知道.
在Java中,您可以使用this类名这样的类:
class OuterClass {
int outerMember = 1;
class InnerClass {
int innerMember = 2;
public void printOuterMember() {
System.out.println(OuterClass.this.outerMember);
System.out.println(outerMember);
}
public void printInnerMember() {
System.out.println(InnerClass.this.innerMember);
System.out.println(this.innerMember);
System.out.println(innerMember);
}
}
}
Run Code Online (Sandbox Code Playgroud)
有时候不需要课程名称,但有时候会有所帮助.
所以我在C#中尝试了同样的事情,但似乎这是不可能的.我对吗?
C#不支持这一点,在Java中,嵌套类捕获父对象引用.C#嵌套类更像是Java中的静态嵌套类.如果要访问父类,则需要在嵌套类构造函数中传递对它的引用.
如果嵌套类具有对它的引用,则它们可以访问父类的私有字段,因此您可以获得类似的结果,只是对父类实例的访问不像Java中那样是自动的.所以这段代码有效
class Owner
{
private int field;
class Nested
{
public Nested(Owner owner) { this.owner = owner; }
Owner owner;
public int D()
{
return owner.field;
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
136 次 |
| 最近记录: |