如果我使用以下方法检查数组的内容:
boardArray[xIn][yIn]
我期待有一个元素,如何提前检查是否没有元素/对象?我知道一个明显的答案真是愚蠢的问题。
我正在尝试调试我的代码,这是期待在这里的东西。我想预先检查它并在程序运行时报告,而不是让它崩溃。
答案 0 :(得分:3)
if(boardArray[xIn][yIn] == null)
//Skip it, do something, print it, whatever you gotta do
答案 1 :(得分:1)
首先,我想从你没有问过的问题开始,但这可能与你的问题有关:
我建议使用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
不为空并且跳过此检查,则完全有效。
答案 2 :(得分:0)
如果你不想对空值做任何事情,
if(!(boardArray[xIn][yIn]==null)) {
// Your operations here
}
您可以处理在else部分中如何处理空值,它可以是可选的
答案 3 :(得分:0)
除了接受的答案(正确)之外,您还要检查可能为null的任何数组对象级别的空值。
取决于您如何进行检查并需要信息,您可以这样做
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的想法,表明有多种方法可以根据具体情况做你想做的事。
祝你好运,编码愉快