IDictionary<string, IDictionary<string, IList<long>>> OldDic1;
(只是爲了演示,它被實例化並具有價值 - 別的地方)
我爲什麼能做到這一點?
Dictionary<string, IDictionary<string, IList<long>>> dic1 =
OldDic1 as Dictionary<string, IDictionary<string, IList<long>>>;
基本上dic1在執行這行後有所有OldDic1的值;作品。
然而,當我這樣做:
Dictionary<string, Dictionary<string, List<long>>> dic1 =
OldDic1 as Dictionary<string, Dictionary<string, List<long>>>;
我得到空,這是一樣的,除了它的鑄造不會崩潰,而是返回null。所以問題是爲什麼我不能將它從接口轉換爲類型?有沒有解決方案,除了改變它的存儲方式?
鑄造有點混亂。當進行這種類型的轉換(或使用「as」)時,基本上所有您正在做的是檢查對象是否實際上是存儲器中的指定類型。您不是創建一個具有該類型的新對象,而只是檢查。如果還不清楚,請閱讀以下文章:http://blogs.msdn.com/ericlippert/archive/2009/03/19/representation-and-identity.aspx – 2009-06-30 16:09:13
謝謝,優秀的文章。 – ra170 2009-06-30 16:45:13