2013-04-20 97 views
1

如果我使用的檢查數組的內容:提前檢查空數組元素

boardArray[xIn][yIn] 

,我希望那裏是一個元素,我該如何檢查,如果沒有元件/物件有提前?真的很愚蠢的問題,我知道一個明顯的答案。

我想調試我的代碼,這是期待的東西在這裏。我想預先檢查它並在程序運行時報告,而不是讓它崩潰。

+2

'if(boardArray [xIn] [yIn] == null){...}'? – Ryan 2013-04-20 15:56:48

+1

它可能爲null,'boardArray','boardArray [xIn]'或boardArray [xIn] [yIn]'是什麼?或者這些的組合? – 2013-04-20 16:05:47

回答

3
if(boardArray[xIn][yIn] == null) 
//Skip it, do something, print it, whatever you gotta do 
0

如果你不想做任何空值,

if(!(boardArray[xIn][yIn]==null)) { 

// Your operations here 

} 

您可以處理空值是如何在其他部分處理,也可能是可選的

1

首先,我D喜歡從你沒有問過的東西開始,但是這可能與你的問題有關:

我建議使用multidimensional數組,而不是jagged array。例如:

BoardSquare[,] boardArray = new BoardSquare[8, 8]; 

最有可能你正在處理一個矩形板,所以你沒有必要jagged arrays

我告訴這個的原因是因爲它使檢查null更容易一點。使用鋸齒狀陣列,任何這些可能是null

  • boardArray
  • boardArray[xIn]
  • boardArray[xIn][yIn]

使用二維數組,只有兩個可能性:

  • boardArray
  • boardArray[xIn, yIn]

因此,檢查變得容易一點:

if (boardArray != null && boardArray[xIn, yIn] != null) 
{ 
    // Do stuff 
} 

這可能是完全有效的假設boardArray不爲空,並跳過此檢查,如果它可以從初始化代碼被證明。

0

除了接受的答案(哪些是正確的)之外,您還希望檢查任何可能爲空的數組對象的任何級別的空值。

這取決於你怎麼做的檢查和需要的信息,你可能只是這樣做

if (boardArray != null && boardArray[xIn] != null && boardArray[xIn][yIn] != null){ 
    // all is good, do what must be done here 
} 

如果你循環通過它們你可以使用LINQ以消除環路的空項。這將是這樣的事情(我沒有在我面前打開IDE,所以語法可能會有點偏差,請原諒我。

foreach(var instance in boardArray[xIn].Where(x => x != null).Select(x => x).ToList()){ 
    // instance is the not nulled value. 
} 

我長大了LINQ的想法,顯示有做你想做的,根據具體情況什麼的多種方式。

祝你好運,快樂編碼