2014-05-22 52 views

回答

4

不,它們不相似。 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()方法

6

auto C#中的當量是var - 編譯器將推斷適當的類型。 dynamic是在運行時確定的,所以它永遠不會拋出編譯錯誤。來自MSDN:

「在編譯時,假定鍵入爲動態的元素支持任何操作。」

然而,如果代碼無效,它會在運行時拋出錯誤。