C# 提前检查空数组元素
如果我正在使用以下命令检查数组的内容:C# 提前检查空数组元素,c#,arrays,null,C#,Arrays,Null,如果我正在使用以下命令检查数组的内容: boardArray[xIn][yIn] 我希望有一个元素,如何事先检查那里是否没有元素/对象?我知道这个问题很傻,答案很明显 我正试图调试我的代码,这是期待在这里的东西。我想在程序运行时预先检查它并报告,而不是让它崩溃。如果您不想对空值执行任何操作 if(boardArray[xIn][yIn] == null) //Skip it, do something, print it, whatever you gotta do if(!(boardAr
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
}
您可以在else部分中处理空值的处理方式,如果您不想对空值执行任何操作,它可以是可选的
if(!(boardArray[xIn][yIn]==null)) {
// Your operations here
}
您可以在else部分中处理null的处理方式,它可以是可选的首先,我想从一些您没有问过的问题开始,但可能与您的问题有关: 我建议使用数组,而不是数组。例如:
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
不是空的,则可以完全正确地假设它并跳过此检查。首先,我想从您没有问过的问题开始,但这可能与您的问题有关:
我建议使用数组,而不是数组。例如:
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 != 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 != 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的想法是为了说明有多种方法可以做你想做的事情,这取决于具体情况
祝你好运和快乐编码
如果(boardArray[xIn][yIn]==null){…}
哪一个可能是空的,boardArray
,boardArray[xIn]
,或者boardArray[xIn][yIn]
?或者这些的组合?如果(boardArray[xIn][yIn]==null){…}
?哪一个可能为空、boardArray
、boardArray[xIn]
、或boardArray[xIn][yIn]
?或这些的组合?