object obj =123; string str = obj as string; 這樣得到的str的值為null的原因: 首先 雖然123值類型賦值給引用類型,發(fā)生了裝箱操作,但是 obj 變量的類型對(duì)象仍然是 System.Int32 因?yàn)镃#編譯器和clr需要保證C#必須類型的安全,類型安全之一就是類型必須是明確,類型必須是唯一的。as 關(guān)鍵字,只會(huì)檢測(cè)obj 是否兼容 System.String,但是當(dāng)前的obj 的類型指針是System.Int32,所以既然不兼容,那么只能返回null了 |
|
來(lái)自: XXG學(xué)習(xí)園 > 《各種2B錯(cuò)誤》