c#中的内部类和外部类

时间:2010-07-01 04:54:41

标签: c#

如何在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#中使用相同的功能吗?

4 个答案:

答案 0 :(得分:11)

不,在这种情况下,C#与Java没有相同的语义。您可以制作TestVariable conststatic,或将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可能会导致不良行为。我的消化是通过构造函数注入它。