是否 「動態」 在C#中的工作就像在C 「自動」 ++關鍵字 「汽車」 C++和 「動態」 C#
更多細節關鍵詞:
auto a = 5; //C++
dynamic a = 5; //C#
他們是類似?
是否 「動態」 在C#中的工作就像在C 「自動」 ++關鍵字 「汽車」 C++和 「動態」 C#
更多細節關鍵詞:
auto a = 5; //C++
dynamic a = 5; //C#
他們是類似?
不,它們不相似。 AFAIK,auto
將類似於C#中的var
。
auto
解析爲編譯時間,而不是運行時。
FROM MSDN
auto關鍵字指示編譯器使用聲明的變量的初始化 表達來推斷其類型。
因此,在你的代碼
auto a = 5; //C++
a.ToUpper(); // Compile time error
但
dynamic a = 5; //C#
a.ToUpper(); //No error at compile time since it will resolve @ runtime
但在運行時會拋出錯誤,因爲int
類型沒有toupper()
方法
號
的auto
C#中的當量是var
- 編譯器將推斷適當的類型。 dynamic
是在運行時確定的,所以它永遠不會拋出編譯錯誤。來自MSDN:
「在編譯時,假定鍵入爲動態的元素支持任何操作。」
然而,如果代碼無效,它會在運行時拋出錯誤。
'auto'解決在編譯時,而'dynamic'在運行時。 – Rakib