簡體   English   中英

C#中的二維數組

[英]2 dimensional array in C#

第二個維度可以初始化為動態大小嗎?

否(因為C#數組維度是固定的),但您可以創建List<T>的數組。

你的意思是一個鋸齒狀的陣列? 像這樣:

class Program
{
  public int[][] jaggedArray = {
                                 new int[]{ 1 } ,
                                 new int[]{} ,
                                 new int[]{ 1 , 2 , 3 } ,
                               } ;
}

通常,鋸齒狀陣列具有大小。 您可以使用兩個集合:

List<List<int>> list = new List<List<int>>();

您可以像訪問任何數組一樣訪問這些值。 優點是您無需在創建時指定大小。

編輯:如果“外部”數組是固定的,您可以使用:

List<int>[] list = new List<int>[100]();

編輯:看你的例子我會說這樣的事情可以解決問題:

List<int>[] sVertRange = new List<int>[924];

int nH = 0;
for (int h = 315; h < 1240; h++) 
{
    for (int v = 211; v <= 660; v++) 
    {
            Color c = bmp.GetPixel(h, v);
            if (c.R > 220 && c.G < 153) 
        {
            if(sVertRange[nH] == null)
            {
                sVertRange[nH] = new List<int>();
            }

                    sVertRange[nH].Add(v);
            }
            nH++;
        }
}

如果你想在C#中創建二維數組,每個元素類型都是位圖

int num1 = 10,num2 = 20;
Bitmap[][] matrix= new Bitmap[num1][]; 
for (int i = 0; i < num1; i++ )
     matrix[i] = new Bitmap[num2];

更新 :我剛剛測試了它,它不起作用 - 它立即崩潰。 那么如何用Kees的語法寫下以下內容呢?

    int[][] sVertRange = {new int[924] ,new int[]{}};  
    int nH = 0;
    int nV = 0;
    for (int h = 315; h < 1240; h++) {
        for (int v = 211; v <= 660; v++) {
            Color c = bmp.GetPixel(h, v);
            if (c.R > 220 && c.G < 153) {
                sVertRange[nH][nV++] = v;
            }
        nH++;
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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