【问题标题】:IsNot Nothing is failingIsNot 没有什么是失败的
【发布时间】:2015-08-11 22:09:00
【问题描述】:

我看到过类似的问题,因为我必须使用 VB.net 来完成一个项目,所以我遇到了相当简单的事情。

If (myValue IsNot Nothing) And (myValue.Length > 12) Then
    ' do some stuff
End If

现在当 myValue 是 Nothing 它给我空引用异常。我也试过了,

If (Not myValue Is Nothing) And (myValue.Length > 12) Then
    ' do some stuff
End If

在我经常使用的 C# 中,这很容易,但在 VB.net 中我找不到任何方法。

【问题讨论】:

  • 使用AndAlso 使第二个测试短路,否则它将评估它并失败
  • vb 中的 AND 类似于 C# 中的 &。 AndAlso 就像 &&

标签: vb.net


【解决方案1】:

使用AndAlso 代替And(和OrElse 代替Or)。

AndAlso 对两个表达式执行短路 逻辑连接。 And 即使第一个已经返回False,也会评估两者。

旁注:出于同样的原因,您还应该使用 If-operator 而不是旧的 VB 函数 IIf

【讨论】:

  • 感谢您的回复。我根本不知道 AndAlso。我只是好奇 IsNot Nothing 和 String.IsNullOrEmpty 是否会做同样的工作?请对此发表评论。问候
  • 您也可以使用 String.IsNullOrEmpty,而不是显式的 null 检查。
猜你喜欢
  • 2016-06-18
  • 1970-01-01
  • 1970-01-01
  • 2012-07-25
  • 2014-07-31
  • 1970-01-01
  • 2021-02-27
  • 2019-06-06
  • 2012-02-24
相关资源
最近更新 更多