我有一个用户对象,我有一个名为 userID 的变量。
我想测试两件事:
- 用户 == 空
- user.UserID != 用户ID
只有当用户不为空时才必须进行第二次测试,否则我会遇到运行时错误。
我想知道是否可以在同一行测试两者,如下所示:
return ((user == null) && (user.UserID != userID))
但是像上面这样的编码不起作用,因为当用户为空时,我有一个运行时错误。
谢谢。
我有一个用户对象,我有一个名为 userID 的变量。
我想测试两件事:
只有当用户不为空时才必须进行第二次测试,否则我会遇到运行时错误。
我想知道是否可以在同一行测试两者,如下所示:
return ((user == null) && (user.UserID != userID))
但是像上面这样的编码不起作用,因为当用户为空时,我有一个运行时错误。
谢谢。
我假设 C# 并且当用户为空或用户 ID 与 user.UserID 不同时,您需要一个布尔值 == true。所以答案是:
return ((user == null) || (user.UserID != userID));
OR 逻辑运算符一旦发现从最左边开始的条件为真,就会停止对表达式的求值。
在这种情况下,如果 user 为 null,则您的结果为 (True),无需测试第二个条件,因此您避免了 null 引用异常。
是的,您可以在一行中进行检查,但您应该使用or
条件
return ((user == null) || (user.UserID != userID))
我认为最容易阅读的方式是:
如果你想如果用户为空则为真:
return user == null || user.UserID != userID
如果满足第一个条件(为真),则不会检查第二个条件。
或者,如果用户为空,则您想要false :
return user != null && user.UserID != userID
如果第一个条件不满足(它为假),那么它不会检查第二个条件。&&
和||
=)的力量