【发布时间】:2020-12-21 14:34:14
【问题描述】:
用户应选择维度 (1, 2)。用户选择维度后,应创建一个具有该维度的数组。在此之后,数组将被随机填充、排序和打印。 我为此创建了引用一维或二维数组的方法。
我现在唯一的问题是两个数组需要具有相同的名称 (arr),因为后面的方法只将 arr 作为参数。
我尝试在选择 array-dim 之前创建一个 var 变量。但是使用 var 我需要指定变量的类型,所以我不能简单地使用var arr;
我的问题有什么解决办法吗?我真的不知道如何解决这个问题。
最后我想要这样的东西:
var arr;
switch (arrDim)
{
case 1:
arr = Fill1DArrayRandom();
break;
case 2:
arr = Fill2DArrayRandom();
break;
}
PrintArray(arr);
switch (chosenAlgo)
{
case 1:
Algorithms.InsertionSort.Sort(ref arr);
break;
...
采用一维或二维数组的方法。
static void PrintArray(int[] arr) ...
static void PrintArray(int[,] arr) ...
static bool IsSorted(ref int[] arr) ...
static bool IsSorted(ref int[,] arr)
{
for (int i = 0; i < arr.Length - 1; i++)
for (int j = 0; j < arr.Length - 1; j++)
if (arr[i,j] > arr[i-1,j-1])
return false;
return true;
}
【问题讨论】:
-
您可以直接使用类型Array或使用泛型
List<List<int>>。 -
另一种解决方案是有一个一维数组并模拟多维。
-
@Vernou 如果我使用 Array 类型,我的方法如何知道它是一维数组还是二维数组?因为那 Method 的参数必须是 Array 类型的。如果是这样,我无法使用这些方法。
-
属性Array.Rank返回维数。
标签: c# arrays dynamic dimensions custom-dimensions