c#中的内部类和外部类

如何在c#中实现内部外部类

我有两个嵌套类

喜欢

class Outer { int TestVariable = 0; class Inner { int InnerTestVariable = TestVariable // Need to access the variable "TestVariable" here } } 

它在编译时显示错误。

它可以解决

1)使TestVariable成为静态的

2)将外类的实例传递给Inner类

但在java中 ,不需要创建实例或静态。

我可以在C#中使用相同的function吗?

不,在这种情况下,C#与Java没有相同的语义。 您可以使用TestVariable conststatic ,或者将Outer的实例传递给Inner的构造函数,如您所述。

你可以创建一个内部类的实例,甚至没有外部类实例,你认为在这种情况下会发生什么? 这就是你不能使用它的原因

 Outer.Inner iner = new Outer.Inner(); // what will be InnerTestVariable value in this case? There is no instance of Outer class, and TestVariable can exist only in instance of Outer 

这是其中一种方法

  class Outer { internal int TestVariable=0; internal class Inner { public Inner(int testVariable) { InnerTestVariable = testVariable; } int InnerTestVariable; //Need to access the variabe "TestVariable" here } internal Inner CreateInner() { return new Inner(TestVariable); } } 

使变量internal或传递给内部的constructor

简答:不,

您将以某种方式将TestVariable注入您的Inner类。 使您的testVariable可能会导致不良行为。 我的消化是通过构造函数注入它。