Jam*_*mes 5 .net asp.net nullable page-lifecycle global-asax
我正在使用Global.asax通过Application_EndRequest事件在每个请求结束时执行日志记录.但是,我看到HTTPContext.Current.Items集合中存储的某些值的奇怪行为.
下面是可以为空的枚举的调试输出.您可以看到有一个值,但HasValue已解析为False?!
{System.Nullable(Of AreaNameEnum)}
HasValue: False
hasValue: False
Value: {System.InvalidOperationException}
value: ADMIN {0}
Run Code Online (Sandbox Code Playgroud)
我猜测在请求生命周期中访问HTTPContext.Current已经太晚了 - 但它似乎有时可行,有时却不行.任何人都可以更清楚地了解到底发生了什么?
谢谢
Nullable 是一个包含布尔值 hasValue 和 T 值的结构,其中 T 是值类型。在本例中是一个枚举。枚举必须有某个值,在本例中默认为 0,但是 public Value 会抛出异常,因为 hasValue 为 false。
您所看到的是 Nullable 的内部原理。当 hasValue 为 false 时,您无法将任何内容读入具有任何值的内部值字段。毕竟,如果 value 可以包含 null,那么在这里使用 Nullable 就没有任何意义了。
| 归档时间: |
|
| 查看次数: |
379 次 |
| 最近记录: |