如何检查数组的值是否为空

How to check if a value of an array is empty

我正在编写一个国际象棋程序,必须查看某个值是否为空。我试过了

aPieceCommandButtons的数组。 cmdSquare 是形状的控件数组。

Private aPiece(63) As CommandButton

...

For p = 0 To 63
    If IsEmpty(aPiece(p)) Then
        aPiece(p).Left = cmdSquare(p).Left
        aPiece(p).Top = cmdSquare(p).Top
    
    End If
Next p 

所有变量都已声明,似乎是 IsEmpty 函数,它不起作用。

这取决于 aPiece 的数据类型。如果它是一个变体并且您没有为其赋值,则 IsEmpty 将 return 为真。但是,如果它是 StringDateInteger 等,它们会自动初始化(String 将为空字符串,Integer 将为 0 ) 所以 IsEmpty 将 return 为假。

此页面是一个很好的参考:IsEmpty Function - Visual Basic 6.0

IsEmpty 方法仅 returns 对变体有意义的信息。由于数组包含对象,您需要这样检查:

If aPiece(p) Is Nothing Then

然而,这似乎只是答案的一部分。上面的逻辑是说“如果我的数组中没有片段,则更新它的位置”。这对我来说没有意义,并且会产生错误。您还需要添加 Not 如下所示:

For p = 0 To 1
   If Not aPiece(p) Is Nothing Then
      aPiece(p).Left = cmdSquare(p).Left
      aPiece(p).Top = cmdSquare(p).Top
   End If
Next p