如果我正在使用以下方法检查数组的内容:
boardArray[xIn][yIn]
我期待有一个元素,我如何预先检查那里是否没有元素/对象?非常愚蠢的问题,我知道一个明显的答案。
我正在尝试调试我的代码,它期望这里有一些东西。我想预先检查它并报告程序正在运行而不是让它崩溃。
if(boardArray[xIn][yIn] == null)
//Skip it, do something, print it, whatever you gotta do
首先,我想从您没有问过但可能与您的问题相关的问题开始:
BoardSquare[,] boardArray = new BoardSquare[8, 8];
很可能您正在处理矩形板,因此您不需要锯齿状数组。
我之所以这么说,是因为它使检查null
更容易一些。使用锯齿状数组,其中任何一个都可以是null
:
boardArray
boardArray[xIn]
boardArray[xIn][yIn]
使用二维数组,只有两种可能性:
boardArray
boardArray[xIn, yIn]
因此,检查变得容易一些:
if (boardArray != null && boardArray[xIn, yIn] != null)
{
// Do stuff
}
boardArray
如果可以从初始化代码中证明,假设不为空并跳过此检查可能是完全有效的。
如果你不想对空值做任何事情,
if(!(boardArray[xIn][yIn]==null)) {
// Your operations here
}
您可以处理在 else 部分中如何处理空值,它可以是可选的
除了接受的答案(正确的)之外,您还想检查可能为空的数组对象的任何级别上的空值。
取决于您如何进行检查并需要信息,您可以这样做
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 的想法是为了表明有多种方法可以做你想做的事,具体取决于具体情况。
祝你好运,编码愉快