dynamic d = "hello";
Console.WriteLine (d.ToUpper()); // HELLO
Console.WriteLine (d.Foo()); // Compiles OK but gives runtime error
我在讀一本書,在本節的跌跌撞撞,在第三行,只在運行時拋出的錯誤,但它會編譯即使Foo
方法不存在。動態可變編譯
爲什麼不在編譯時檢查它,而不是在運行時?
編輯: 什麼意義,什麼時候可以使用這個概念?
dynamic d = "hello";
Console.WriteLine (d.ToUpper()); // HELLO
Console.WriteLine (d.Foo()); // Compiles OK but gives runtime error
我在讀一本書,在本節的跌跌撞撞,在第三行,只在運行時拋出的錯誤,但它會編譯即使Foo
方法不存在。動態可變編譯
爲什麼不在編譯時檢查它,而不是在運行時?
編輯: 什麼意義,什麼時候可以使用這個概念?
dynamic
-keyword導致了此行爲。當製作一個變量dynamic
時,你可以做所有的東西,因爲它使編譯時不安全。所以通過使dynamic
完全繞過編譯時類型 - 這就是爲什麼你在使用它時應該小心。
雖然在運行時檢查成員是dynamic
的全部點 - 爲什麼它應該存在,否則?
我以爲你故意想讓var
-keyword這給你編譯時安全。看看this point for the difference on both。至於當使用關鍵字看看this post。
我什麼時候可以使用這種技術?或使用它的正確方法? – Sherlock
通常根本沒有,只有露水的情況下,你應該使用它。無論如何,只要你不需要*顯式*,我就不會太在意。 – HimBromBeere
感謝兄弟!即使我失去了我的一些聲譽,這也是有幫助的。T.T版主感嘆 – Sherlock
你可以把它標記爲重複的,我在這篇文章中唯一的目標是從有經驗的程序員那裏得到輸入,你不能在書中甚至在一些文章中找到它。 – Sherlock