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]
?或这些的组合?