//always works, returning a valid object into _page
_page = _httpContext.Handler as System.Web.UI.Page;
//Fails throwing the exception : Unable to cast object of type 'System.Web.DefaultHttpHandler' to type 'System.Web.UI.Page'
_page = (System.Web.UI.Page)_httpContext.Handler;
我想知道为什么会发生这种情况?
编辑:
//Fixes the problem
if(_httpContext.Handler is System.Web.UI.Page)
_page = (System.Web.UI.Page)_httpContext.Handler;
如果我调试'as'关键字语句,我永远不会得到空引用(对象总是被正确分配)。然而,()转换除非有if语句否则会创建异常。
编辑:在大约15次类运行后,我能够获得一个null。似乎需要更多的运行才能找到null,与()转换捕获异常的速度相比较奇怪。
旧版:当在'as'语句中进行调试时,每次类运行时断点都会触发-从不为空。
当if语句中的'()'语句进行调试时,每次断点触发时,转换正常工作。奇怪。
(int)0 as IEquatable<int>
是有效的,特别是(object)o as int?
是一种很好的方法来检查o
是否是装箱的int
而不捕获异常。它还允许您编写诸如(T?)x as U?
这样的代码,在泛型代码中可能会有些用处。 - Pavel Minaevnull
放入_page中,这看起来不像您预期的那样。 - Earlz_handler
不是System.Web.UI.Page
。在异常点处使用调试器检查它指向了什么。 - Pavel Minaev