如果我使用的檢查數組的內容:提前檢查空數組元素
boardArray[xIn][yIn]
,我希望那裏是一個元素,我該如何檢查,如果沒有元件/物件有提前?真的很愚蠢的問題,我知道一個明顯的答案。
我想調試我的代碼,這是期待的東西在這裏。我想預先檢查它並在程序運行時報告,而不是讓它崩潰。
如果我使用的檢查數組的內容:提前檢查空數組元素
boardArray[xIn][yIn]
,我希望那裏是一個元素,我該如何檢查,如果沒有元件/物件有提前?真的很愚蠢的問題,我知道一個明顯的答案。
我想調試我的代碼,這是期待的東西在這裏。我想預先檢查它並在程序運行時報告,而不是讓它崩潰。
if(boardArray[xIn][yIn] == null)
//Skip it, do something, print it, whatever you gotta do
如果你不想做任何空值,
if(!(boardArray[xIn][yIn]==null)) {
// Your operations here
}
您可以處理空值是如何在其他部分處理,也可能是可選的
首先,我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
不爲空,並跳過此檢查,如果它可以從初始化代碼被證明。
除了接受的答案(哪些是正確的)之外,您還希望檢查任何可能爲空的數組對象的任何級別的空值。
這取決於你怎麼做的檢查和需要的信息,你可能只是這樣做
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的想法,顯示有做你想做的,根據具體情況什麼的多種方式。
祝你好運,快樂編碼
'if(boardArray [xIn] [yIn] == null){...}'? – Ryan 2013-04-20 15:56:48
它可能爲null,'boardArray','boardArray [xIn]'或boardArray [xIn] [yIn]'是什麼?或者這些的組合? – 2013-04-20 16:05:47