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
const
, static
,或者将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可能会导致不良行为。 我的消化是通过构造函数注入它。