採用了一塊這樣的代碼,編譯器會抱怨上c.MyProperty
:修復了使用空分配的'未分配本地變量的使用'。爲什麼?
MyClass c;
try { throw new Exception(); }
catch (Exception) { }
c.MyProperty = 2; // "Use of unassigned local variable 'c'".
然而,如果你在初始化分配null
到c
它不會抱怨:
MyClass c = null;
try { throw new Exception(); }
catch (Exception) { }
c.MyProperty = 2; // no complains this time.
那麼,爲什麼這項工作?如果c
未分配null
並且編譯器假設允許它,是不是會拋出相同的異常c.MyProperty
,未將對象引用設置爲對象的實例?
嗯,這很有趣,我的猜測是,雖然該代碼(第二版),仍然會拋出在運行時異常..它是不是撿空分配可能只是一個Visual Studio問題 - 只需一個推測 ? – 2011-06-02 10:13:46
看看http://stackoverflow.com/questions/4770426/non-initialized-vs-null-values-of-reference-types – Haplo 2011-06-02 10:17:31
非常好,優雅地問問題 – user1451111 2017-11-05 10:29:40