//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;
我想知道爲什麼會發生這種情況?爲什麼'as'關鍵字在()投影不起作用的情況下工作
編輯:
//Fixes the problem
if(_httpContext.Handler is System.Web.UI.Page)
_page = (System.Web.UI.Page)_httpContext.Handler;
如果我調試「爲」關鍵字聲明,我從來沒有得到一個空引用(對象總是正確分配)。但是,()強制除非具有if語句,否則會創建異常。
編輯:經過約15通過班級運行後,我能夠得到一個空。似乎需要更多的運行才能找到空值,而(()強制轉換能夠捕獲異常的速度有多快。
OLD:每當類運行時都會在'as'語句中進行調試時,斷點命中 - 永不爲空。
當if中的'()'語句中有調試時,每次中斷點擊中演員正常工作。 Werid
我不相信。我寧願做Class1 foo =(Class1)欄,並獲得轉換異常,而不是稍後使用foo.Property或foo.Method()獲取不是有用的null異常。 null異常可能發生在「as」範圍之外的任何地方。如果我期望代碼有時會失敗,那麼我將使用「as」並檢查null。 – 2010-04-30 19:54:28
這是一般模式。你用'as'進行轉換,然後檢查是否爲空。 – Tejs 2010-04-30 20:10:20