[英]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.