Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.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#_Arrays - Fatal编程技术网

C# 二维/三维阵列构造器

C# 二维/三维阵列构造器,c#,arrays,C#,Arrays,我想创建一个名为a的类,在实例化过程中,该类为我提供2D或3D INT数组。如果我调用A2,我应该得到对象Arr[10,10],当我调用A3时,我应该得到Arr[10,10,10]。在这一点上,我不在乎元素是什么 当我尝试这样做时: class A { public object Arr; public A(int dim) { switch (dim) { case 2: objec

我想创建一个名为a的类,在实例化过程中,该类为我提供2D或3D INT数组。如果我调用A2,我应该得到对象Arr[10,10],当我调用A3时,我应该得到Arr[10,10,10]。在这一点上,我不在乎元素是什么

当我尝试这样做时:

class A
{
    public object Arr;
    public A(int dim)
    {
        switch (dim)
        {
            case 2:
                object Arr = new int[10, 10];
                break;
            case 3:
                object Arr = new int[10, 10, 10];
                break;
            default:
                object Arr = null;
                break;
        }
    }      
}
class A
{
    public object Arr;
    public A(2)
    {
        object Arr = new int[10, 10];
    }
    public A(3)
    {
        object Arr = new int[10, 10, 10];
    } 
}
我明白了:

CS0128此范围中已定义名为“Arr”的局部变量

当我尝试这样做时:

class A
{
    public object Arr;
    public A(int dim)
    {
        switch (dim)
        {
            case 2:
                object Arr = new int[10, 10];
                break;
            case 3:
                object Arr = new int[10, 10, 10];
                break;
            default:
                object Arr = null;
                break;
        }
    }      
}
class A
{
    public object Arr;
    public A(2)
    {
        object Arr = new int[10, 10];
    }
    public A(3)
    {
        object Arr = new int[10, 10, 10];
    } 
}
我明白了:

需要CS1001标识符

我现在缺乏想法

我可以这样做吗?

您可以看到:

CS0128此文件中已定义名为“Arr”的局部变量 范围

因为您在每个案例中再次定义对象Arr。它应该是Arr=newint[10,10,10]

在第二个示例中,您可以看到:

需要CS1001标识符

我猜您真正想要的是实例化类A的public Arr属性。所以您可能想要这样的东西:

this.Arr = new int[10, 10];
在每个构造函数内部


需要更多有关此CS1001标识符的信息。这是因为该方法的签名需要一个变量,而您正在传递2和3,我猜您想要的是int n?

您的第二个示例不正确,因为您不需要两个构造函数。在您的案例中只需要一个构造函数,只需像这样使用Switch案例,不要在每个案例中再次定义Arr:

public class A
{
    public object Arr;
    public A(int dim)
    {
        switch (dim)
        {
            case 2:
                 Arr = new int[10, 10];
                break;
            case 3:
                 Arr = new int[10, 10, 10];
                break;
            default:
                 Arr = null;
                break;
        }
    }
}
然后:

A obj1 = new A(2);
var x = obj1.Arr;//int[10,10]
A obj2 = new A(3);
var y = obj2.Arr;//int[10,10,10]

第二个失败,因为构造函数签名需要参数的类型和名称。