0

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

我想测试两件事:

  • 用户 == 空
  • user.UserID != 用户ID

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

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

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

但是像上面这样的编码不起作用,因为当用户为空时,我有一个运行时错误。

谢谢。

4

3 回答 3

1

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

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

OR 逻辑运算符一旦发现从最左边开始的条件为真,就会停止对表达式的求值。

在这种情况下,如果 user 为 null,则您的结果为 (True),无需测试第二个条件,因此您避免了 null 引用异常。

于 2012-04-14T14:36:36.273 回答
0

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

return ((user == null) || (user.UserID != userID))
于 2012-04-14T14:35:43.870 回答
-1

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

如果你想如果用户为空则为真:

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

如果满足第一个条件(真),则不会检查第二个条件。

或者,如果用户为空,则您想要false :

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

如果第一个条件不满足(它为假),那么它不会检查第二个条件。&&||=)的力量

于 2012-04-14T14:42:02.753 回答