在像OperationContext
之类的复杂对象中编写此类代码是安全的:
if(OperationContext.Current!=null &&
OperationContext.Current.ServiceSecurityContext !=null &&
OperationContext.Current.ServiceSecurityContext.WindowsIdentity !=null)
或者我是否需要将代码分成三个if
语句?
我的问题是如果OperationContext.Current
为空,我担心OperationContext.Current.ServiceSecurityContext
会抛出NullReferenceException
。
答案 0 :(得分:4)
C#中的&&运算符使用short circuit evalulation,因此您的代码很好。
这意味着首先评估条件的左侧,然后评估它是否通过右侧。
答案 1 :(得分:3)
很安全。 &&
的右侧仅在左侧为true
的情况下进行评估。
以下是MSDN explanation:
操作
x && y
对应于操作
x & y
除了如果x为假,则不评估y,因为结果为 无论y的值是什么,AND操作都是假的。这是 被称为“短路”评估。
答案 2 :(得分:1)
不会,请看一下&& 运算符的定义:http://msdn.microsoft.com/en-us/library/2a723cdk.aspx。如果第一部分为假,则不会评估第二部分。
如果使用& 运算符,您的代码将抛出该异常。