gpt4 book ai didi

c# - 使用 Java 在 C# 中从嵌套类访问父类成员的差异

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:47:57 25 4
gpt4 key购买 nike

我是 Java 的新手,但多年来一直在使用 C#。所以我要将用 Java 编写的代码转换为 C#。一切都很好,但我遇到了一个似乎很奇怪的代码。这是代码:

//Java Version
public class ParentClass{

ArrayList<SomeType> values;
void MyFunction(){ /*some codes*/ }
//other codes

public class NestedClass {

public void handleMessage(SomeType val) {
values.add(val); //This cannot be done in C#
MyFunction(); //This cannot be done in C#
}
}
}

毫不奇怪,在 C# 中我无法访问 values (这是一个 List<SomeType> )和 MyFunction . 为什么这在 Java 中可行以及如何在 C# 中获得等效代码?

最佳答案

Java 中有几种内部(嵌套)类:

  1. 静态内部类
  2. 非静态内部类
  3. 函数局部内部类
  4. 匿名内部类

这些类的不同之处在于它们可以在外部类中访问哪些成员。

C# 只有一种类,对应于 Java 列表中的第一类。你的代码有#2,一个非静态内部类。这些类的实例隐式引用了它们的外部类,解释了它们访问外部类成员的方式。作为拥有此隐式引用的交换,非静态内部类只能在外部类对象的上下文中实例化。

要在 C# 中对非静态内部类建模,可以添加一个构造函数,该构造函数采用外部类的实例,并将对外部类成员的所有直接引用替换为由引用您设置的外部类的变量限定的引用在构造函数中。

关于c# - 使用 Java 在 C# 中从嵌套类访问父类成员的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19540273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com