Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# c语言中的内类和外类#_C# - Fatal编程技术网

C# c语言中的内类和外类#

C# c语言中的内类和外类#,c#,C#,如何在c语言中实现内部类和外部类# 我有两个嵌套类 像 它在编译时显示错误 这可以通过以下方式解决: 1) 将TestVariable设置为静态 2) 将外部类的实例传递给内部类 但是在java中,不需要创建实例或静态 我也可以在C#中使用相同的功能吗?不,在这种情况下,C#与Java没有相同的语义。您可以使TestVariableconst,静态,或者将外部的实例传递给内部的构造函数,正如您已经提到的。生成变量内部或者传递给内部的构造函数您可以创建内部类的实例,而不需要外部类实例,在这种情况下

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

我有两个嵌套类

它在编译时显示错误

这可以通过以下方式解决:

1) 将TestVariable设置为静态

2) 将外部类的实例传递给内部类

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


我也可以在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);
        }
    }