【发布时间】:2017-01-02 21:04:17
【问题描述】:
我在尝试获取存储在 HttpContext.Current.Session 的布尔属性的值时遇到了一种奇怪的行为。
对象是一个布尔值。首先,我尝试检查对象是否存在,如果存在,请使用它。
我试图在?: 运算符中使用它,但它的行为很奇怪。这是我的监视窗口:
前提
-
"ExistingKey"键存在且值为 false(如果键 不存在返回 false)。
结果
- 检查
!=null是否返回 false(第一件事很奇怪)。 - 使用
?:运算符时,除了条件为假外,它还返回第一个表达式,4(第二个奇怪的地方)。
有人能解释一下这种行为吗?
注意:我并不是要寻找绕过这种情况的替代方法。只是问为什么会这样。
【问题讨论】:
-
好吧,我测试了它,
HttpContext.Current.Session["ExistingKey"] != null实际上返回 true。我也很好奇这种行为。 -
对我来说看起来是正确的。 ExistingKey 有值;它不为空。你所有的比较都反映了这一点。那么问题是什么?
-
@JeffSiver
HttpContext.Current.Session["ExistingKey"] != null返回 false 但它应该为 true。在我的测试中,顺便说一句,这也是正确的。我怀疑这与当前上下文有关,但无法确认。也许以前遇到过这个问题的人可以提供帮助 -
@uteist,我对你的监视窗口感到困惑。最后两项,带有? 4 : 5 是正确的。第三项是否有错字导致其显示不同?
-
@GiladGreen - 为什么第 4 行不正确?唯一不适合的是第 3 行。所有其他的都是一致的。
标签: c# asp.net session httpcontext conditional-operator