用两个数组初始化的二维c#数组

本文关键字:数组 二维 初始化 两个 | 更新日期: 2023-09-27 18:16:44

我对c#有点陌生,我不明白如何使这个工作:

private static readonly Unit[,] UNIT_TYPES = new Unit[,]{LENGTH_UNITS, ANGLE_UNITS};
private static readonly Unit[] LENGTH_UNITS = new Unit[3]{Unit.Millimeters, Unit.Inches, Unit.Centimeters};
private static readonly Unit[] ANGLE_UNITS = new Unit[2]{Unit.Degrees, Unit.Radians};

我在UNIT_TYPES变量上得到错误"期望嵌套数组初始化器"。除了LENGTH_UNITS和ANGLE_UNITS将在编译时准备好这一事实外,似乎没有。重写这个式子的最好方法是什么?

谢谢!

用两个数组初始化的二维c#数组

您正在尝试初始化矩形数组-而您提供的将更适合作为锯齿数组。矩形数组是一个具有多个维度的单一数组,而锯齿数组是一个数组的数组,也就是说,它是一个单维数组,其元素类型是另一个数组类型(因此每个元素都是一个数组引用)。

你也应该修复初始化顺序,否则你将只有空条目(因为锯齿数组将被初始化为其他变量的当前值,这些值在初始化之前将为空…)

private static readonly Unit[] LengthUnits = { Unit.Millimeters, Unit.Inches, Unit.Centimeters };
private static readonly Unit[] AngleUnits = { Unit.Degrees, Unit.Radians };
private static readonly Unit[][] UnitTypes = { LengthUnits, AngleUnits };

问题是,你正在做的是创建一个数组的数组,但编译器期望一个二维数组。

你试图初始化一个矩形数组

int[,] Position = { {2 , 3}, {4 , 5}, {6 , 7} };

这就像数组中的三个数组Eq:

     int[] IN0 = { 2, 3 };
     int[] IN1 = { 4, 5 };
     int[] IN2 = { 6, 7 };``
     int[][] Final = { IN0, IN1, IN2 };

int[,] =创建矩形的方式。int[][] =访问网格或2d图像的方式