Asp.net 在同一行代码上测试null和其他内容

Asp.net 在同一行代码上测试null和其他内容,asp.net,Asp.net,我有一个用户对象和一个名为userID的变量 我想测试两件事: 用户==null user.UserID!=用户ID 第二个测试必须在用户不为null的情况下进行,否则会出现运行时错误 我想知道是否有可能在同一条线上测试这两种情况,如下所示: return ((user == null) && (user.UserID != userID)) 但像上面这样的编码不起作用,因为当用户为null时,我有一个运行时错误 谢谢。是的,您可以在一行中进行检查,但您应该使用或条件 re

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

我想测试两件事:

  • 用户==null
  • user.UserID!=用户ID
第二个测试必须在用户不为null的情况下进行,否则会出现运行时错误

我想知道是否有可能在同一条线上测试这两种情况,如下所示:

return ((user == null) && (user.UserID != userID))
但像上面这样的编码不起作用,因为当用户为null时,我有一个运行时错误


谢谢。

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

return ((user == null) || (user.UserID != userID))
我假设C#,并且当用户为nulluserid与user.userid不同时,您希望布尔值==true。所以答案是:

return ((user == null) || (user.UserID != userID));
OR逻辑运算符在找到从最左侧开始的真实条件后立即停止对表达式的求值


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

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

如果希望为真如果用户为空:

return user == null || user.UserID != userID
return user != null && user.UserID != userID
如果满足第一个条件(这是真的),那么它不会检查第二个条件

或者,如果用户为null,则希望为false

return user == null || user.UserID != userID
return user != null && user.UserID != userID
如果第一个条件没有满足(它是false),那么它不会检查第二个条件。
&&
|
=)的力量