C# 带参数的二维数组

C# 带参数的二维数组,c#,arrays,C#,Arrays,我试图创建一个2d数组,但似乎无法在构造函数中传递值 比如说 public class MyObj { public string State {get; private set;} public MyObj(string s) { this.State = s; } } 在另一节课上 private MyObj[,] Obj; private void Setup() { this.Obj = new MyObj[5,5]; } 当

我试图创建一个2d数组,但似乎无法在构造函数中传递值

比如说

public class MyObj
{
    public string State {get; private set;}
    public MyObj(string s)
    {
         this.State = s;
    }
}
在另一节课上

private MyObj[,] Obj;
private void Setup()
{
    this.Obj = new MyObj[5,5];
}
当我查看
this.Obj
时,State的值总是空的。我明白为什么,但没有在数组中的每个项目上循环(创建后)和设置状态属性(删除
私有集
),我不确定是否还有其他选项

虽然我知道语法是错误的

this.Obj = new MyObj("default text for each item in array")[5,5,]

使用
new
创建引用对象数组时,每个元素都设置为默认值
null
。没有传递默认元素的语法,因此需要使用嵌套循环手动填充数组:

private void Setup() {
    this.Obj = new MyObj[5,5];
    int rows = codes.GetLength(0);
    int cols = codes.GetLength(1);
    for (var r = 0; r != rows ; r++) {
        for (var c = 0 ; c != cols ; c++) {
            Obj[r,c] = new MyObj("default text for each item in array");
        }
    }
}

使用
new
创建引用对象数组时,每个元素都设置为默认值
null
。没有传递默认元素的语法,因此需要使用嵌套循环手动填充数组:

private void Setup() {
    this.Obj = new MyObj[5,5];
    int rows = codes.GetLength(0);
    int cols = codes.GetLength(1);
    for (var r = 0; r != rows ; r++) {
        for (var c = 0 ; c != cols ; c++) {
            Obj[r,c] = new MyObj("default text for each item in array");
        }
    }
}

创建阵列时,仅为潜在对象分配空间。实际上并没有将任何对象指定给这些空间。将数组定义为
new MyObj[5,5]
将生成一个包含所有空值的5x5数组。您仍然需要初始化数组的每个成员。在初始化过程中,您可以指定默认值

或者,您可以使用内联初始化语法


var a=new MyObj[,]{{new MyObj('default')、new MyObj('default2')…}、{…}……}

创建数组时,只为潜在对象分配空间。实际上并没有将任何对象指定给这些空间。将数组定义为
new MyObj[5,5]
将生成一个包含所有空值的5x5数组。您仍然需要初始化数组的每个成员。在初始化过程中,您可以指定默认值

或者,您可以使用内联初始化语法


var a=new MyObj[,]{{new MyObj('default'),new MyObj('default2')…},{…},{…}

如果MyObj有一个默认值,为什么不将其放入类本身呢?类似于
public MyObj(string s){State=string.IsNullOrEmpty(s)?“default value”:s;}
?如果MyObj有一个默认值,为什么不将其放入类本身?类似于公共MyObj(string s){State=string.IsNullOrEmpty(s)?“默认值”:s;}?