2010-08-29 60 views
1

我開發一個圖像處理軟件。當初始化一個數組時,預計會有一個常量值

int size = 3; 

int[,] kernel = new int[size, size] { 
     {1, 2, 1}, 
     {2, 4, 2}, 
     {1, 2, 1} 
}; 

當我編譯我的代碼,我有「A恆定值預計」從size可變編譯錯誤消息。我知道我可以在我的kernel陣列初始化上放3,或者使我的size不變。我問的是這個錯誤背後的技術原因,因爲這個錯誤對我來說沒有任何意義。

回答

1

您可以通過僅指定大小(可能是變量)創建一個具有空值的數組,或者在初始化程序中列出這些值,並可以指定一個常量大小。但是你不能將一個初始值設定項與一個非常量值組合起來。在初始值設定項的情況下,如果要確保初始值設定項產生特定大小的數組,則可以指定大小的常量值。

剛剛擺脫大小參數,您的初始化程序列表已指定大小。

3

編譯器需要數組等級的常量表達式。你可以聲明sizeconst int,或者你可以讓編譯器算起來從初始化表達式:

int[,] kernel = new int[,] { 
      {1, 2, 1}, 
      {2, 4, 2}, 
      {1, 2, 1} 
    }; 
0

在delclaration您要添加的元素,所以你並不需要指定大小。

那麼這將工作:

int[,] kernel = new int[,] { 
     {1, 2, 1}, 
     {2, 4, 2}, 
     {1, 2, 1} 
};