C# 二维/三维阵列构造器
我想创建一个名为a的类,在实例化过程中,该类为我提供2D或3D INT数组。如果我调用A2,我应该得到对象Arr[10,10],当我调用A3时,我应该得到Arr[10,10,10]。在这一点上,我不在乎元素是什么 当我尝试这样做时: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
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]
第二个失败,因为构造函数签名需要参数的类型和名称。