2012-07-21 116 views
1

什麼是C#中的int?它是一個關鍵字,還是來自system.ValueTypes派生的類?如果它是一個關鍵字,然後怎麼做下面幾行編譯什麼是C#中的int?

int i = new int(); // If int is not a class then how does it have a default constructor 

Console.WriteLine(i.ToString()); // If int is not a class then how does it have member functions 

如果int是一個類,那麼它爲什麼沒有必要總是new初始化呢?以下行如何編譯?

int i = 8; 
+3

誰說「結構」或「價值型」 *不能*有方法?這是一些Java廢話說:)'int'是'System.Int32'這是'struct'類型。 (爲了使生活更簡單,編譯器知道各種「文字」結構,如整數,浮點值和字符串,但它是一個固定的集合,例如GUID沒有「literal」,所以'new Guid(string)是必需的。) – 2012-07-21 04:08:46

+1

所有值類型都可以有方法,Java是愚蠢的例外。 – Ryan 2012-07-21 04:11:35

+0

'int i = 8'編譯的原因與'string foo =「bar」'編譯的原因相同。 '8'是'int'類型的字面值,就像''bar「'是'string'類型的字面值。 – cdhowie 2012-07-21 04:12:08

回答

3

int是對於值類型(structSystem.Int32別名關鍵字。作爲一個常規值類型,我相信它的繼承是System.Object - >System.ValueType - >System.Int32

由於int具有文字符號,如字符串和其他數字類型,您可以創建它的實例,而不需要new

+0

如果int是_struct_'System.Int32'的別名,那麼它是如何繼承來自'System.Object'類? – user1232138 2012-07-21 04:16:44

+0

@ user1232138:*所有*值類型都有'System.Object'作爲間接基類。 – Gabe 2012-07-21 04:21:04

0

要使用代碼解釋代碼:

Console.WriteLine(typeof(int) == typeof(Int32)); // Outputs: True 
Console.WriteLine(typeof(int).Name); // Outputs: Int32 
相關問題