在相同的代码行上测试null和其他内容

时间:2012-04-14 14:34:03

标签: asp.net

我有一个用户对象,我有一个名为userID的变量。

我想测试两件事:

  • user == null
  • user.UserID!= userID

只有当用户不为null时才必须进行第二次测试,否则我会遇到运行时错误。

我想知道是否可以在同一行上测试两者,如下所示:

return ((user == null) && (user.UserID != userID))

但是如上所述编码不起作用,因为当用户为空时我有运行时错误。

感谢。

3 个答案:

答案 0 :(得分:0)

是的,您可以在一行中进行检查,但您应该使用or条件

return ((user == null) || (user.UserID != userID))

答案 1 :(得分:0)

我假设C#并且当用户为空时你想要一个布尔值== true OR userid与user.UserID不同。所以答案是:

return ((user == null) || (user.UserID != userID));

OR逻辑运算符在从最左边的一个开始发现真实条件时立即停止对表达式的求值。

在这种情况下,如果user为null,则得到结果(True),并且不需要测试第二个条件,因此可以避免空引用异常。

答案 2 :(得分:-1)

我认为最容易阅读的方式是:

如果您想要 true ,如果user为null:

return user == null || user.UserID != userID

如果满足第一个条件 (这是真的),那么它将不会检查第二个条件。

如果您想要 false ,如果user为null:

return user != null && user.UserID != userID

如果第一个条件是不符合(它是假的),那么它将不会检查第二个条件。 &&|| =)

的强大功能