[英]How can I return a specific array using an index in a multi-dimensional array in .NET?
我以为这很简单,但是考虑到多维数组
string[,] table = new string[,]
{
{"Apple", "Banana", "Clementine", "Damson"},
{"Elderberry", "Fig", "Grape", "Huckleberry"},
{"Indian Prune", "Jujube", "Kiwi", "Lime"}
};
如何使用索引返回特定的数组?
我尝试了以下操作,但不起作用。
string[] firstArray = table[0];
谢谢。
您可以使用锯齿状数组,如下所示:
string[][] table = new string[3][]
{
new string[] {"Apple", "Banana", "Clementine", "Damson"},
new string[] {"Elderberry", "Fig", "Grape", "Huckleberry"},
new string[] {"Indian Prune", "Jujube", "Kiwi", "Lime"}
};
string[] array = table[0];
要么
如果您对使用锯齿数组不感兴趣,则可以使用扩展方法,例如:
public static class MyExtensions
{
public static string[] GetArray(this string[,] table, int dimension )
{
string[] array = new string[table.GetLength(dimension)];
for (int i = 0; i < array.Length; i++)
{
array[i] = table[dimension, i];
}
return array;
}
}
那么您可以通过传递所需的尺寸来获得任意尺寸:
string[] firstArray = table.GetArray(0);
希望这可以帮助
C#中的多维数组和锯齿状数组之间有区别。 如果您的数组是这样定义的:
string[][] table = new string[][]
{
new string[] {"Apple", "Banana", "Clementine", "Damson"},
new string[] {"Elderberry", "Fig", "Grape", "Huckleberry"},
new string[] {"Indian Prune", "Jujube", "Kiwi", "Lime"}
};
那么您的电话就可以了。 要从多维数组中获取一行,可以执行以下操作:
string[] firstRow = new string[table.GetLength(1)];
for (int i = 0; i < firstRow.Length; i++)
{
firstRow[i] = table[0, i];
}
如果您最好的方法是对数组进行扩展,那么您可以在任何地方调用它。 见下文。由于一旦实现扩展方法,您的项目中可能会有许多这样的数组,则可以将其作为table.method(row)应用于任何数组。
public static class ext{
public static string[] twodim(this string[,] inarr, int row) {
string[] ret = new string[inarr.GetLength(1)];
for (int i = 0; i < inarr.GetLength(1); i++)
ret[i] = inarr[row, i];
return ret;
}
}
public class Program{
static void dump(string name, string[] arr){
Console.WriteLine(name);
for (int i = 0; i < arr.Length; i++)
Console.WriteLine(" {0} ", arr[i]);
}
static void Main(string[] args){
string[,] table = new string[,] {
{"Apple", "Banana", "Clementine", "Damson"},
{"Elderberry", "Fig", "Grape", "Huckleberry"},
{"Indian Prune", "Jujube", "Kiwi", "Lime"}
};
dump("Row 0", table.twodim(0));
dump("Row 0", table.twodim(1));
dump("Row 0", table.twodim(2));
}
如果要使用该特定语法,则需要使用锯齿状数组AFAIK。
string[][] table = new string[][]
{
new string[]{"Apple", "Banana", "Clementine", "Damson"},
new string[]{"Elderberry", "Fig", "Grape", "Huckleberry"},
new string[]{"Indian Prune", "Jujube", "Kiwi", "Lime"}
};
string[] firstArray = table[0];
您指定的二维数组需要table [0,N]从表中检索单个元素。
简单的方法
string[,] table = new string[,]
{
{"Apple", "Banana", "Clementine", "Damson"},
{"Elderberry", "Fig", "Grape", "Huckleberry"},
{"Indian Prune", "Jujube", "Kiwi", "Lime"}
};
string[] arr = new string[table.GetLength(1)];
for (int index = 0; index < table.Length; index++)
{
arr[index] = table[0,index];
}
锯齿状阵列也是一种选择。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.