簡體   English   中英

如何在.NET中使用多維數組中的索引返回特定數組?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM