如果我使用的检查数组的内容:提前检查空数组元素
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