C# c语言中的内类和外类#
如何在c语言中实现内部类和外部类# 我有两个嵌套类 像 它在编译时显示错误 这可以通过以下方式解决: 1) 将TestVariable设置为静态 2) 将外部类的实例传递给内部类 但是在java中,不需要创建实例或静态C# c语言中的内类和外类#,c#,C#,如何在c语言中实现内部类和外部类# 我有两个嵌套类 像 它在编译时显示错误 这可以通过以下方式解决: 1) 将TestVariable设置为静态 2) 将外部类的实例传递给内部类 但是在java中,不需要创建实例或静态 我也可以在C#中使用相同的功能吗?不,在这种情况下,C#与Java没有相同的语义。您可以使TestVariableconst,静态,或者将外部的实例传递给内部的构造函数,正如您已经提到的。生成变量内部或者传递给内部的构造函数您可以创建内部类的实例,而不需要外部类实例,在这种情况下
我也可以在C#中使用相同的功能吗?不,在这种情况下,C#与Java没有相同的语义。您可以使
TestVariable
const
,静态
,或者将外部
的实例传递给内部
的构造函数,正如您已经提到的。生成变量内部
或者传递给内部的构造函数您可以创建内部类的实例,而不需要外部类实例,在这种情况下会发生什么?这就是为什么你不能使用它
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);
}
}
简短回答:不
您可能需要将TestVariable注入到内部类中。生成testVariable可能会导致不期望的行为。我的建议是通过构造函数注入它 如果我将变量声明为internal,那么它在内部类中是不可访问的
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);
}
}