如何在c#
中实现内部外部类我有两个嵌套类
像
class Outer
{
int TestVariable = 0;
class Inner
{
int InnerTestVariable = TestVariable // Need to access the variable "TestVariable" here
}
}
编译时显示错误。
可以通过
解决1)将TestVariable设为静态
2)将Outer类的实例传递给Inner class
但在 java 中,无需创建实例或静态。
我可以在C#中使用相同的功能吗?
答案 0 :(得分:11)
不,在这种情况下,C#与Java没有相同的语义。您可以制作TestVariable
const
,static
,或将Outer
的实例传递给Inner
的构造函数,如您所述。
答案 1 :(得分:3)
你可以创建一个内部类的实例,甚至没有外部类实例,你认为在这种情况下会发生什么?这就是你不能使用它的原因
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);
}
}
答案 2 :(得分:0)
变量internal
或传递给内部的constructor
答案 3 :(得分:0)
简短回答:不,
您将以某种方式将TestVariable注入您的Inner类。使您的testVariable可能会导致不良行为。我的消化是通过构造函数注入它。