可能重複:
What is System.Void?
Why not System.Void?C#:爲什麼會出現空白和System.Void之間的差異
我注意到,它是不允許使用typeof(System.Void)
。但允許typeof(void)
。 當您使用typeof(System.String)
或typeof(string)
時,沒有區別。
爲什麼會出現這種情況?
可能重複:
What is System.Void?
Why not System.Void?C#:爲什麼會出現空白和System.Void之間的差異
我注意到,它是不允許使用typeof(System.Void)
。但允許typeof(void)
。 當您使用typeof(System.String)
或typeof(string)
時,沒有區別。
爲什麼會出現這種情況?
這是因爲C#定義了保留原始C風格的別名。
.NET Framework使用特定的命名約定:例如它聲明一個類名應該以Capital開頭。因此,如果文件中有using System;
,則String
(不是C#本機類型,而是System
命名空間中定義的.NET類)實際上被稱爲System.String
或簡稱String
。
C#將string
定義爲System.String
的別名,以便代碼在C和其他基於C的語言(C++,Java,...)中看起來像它。我認爲它更具可讀性。以相同的方式,int
與System.Int32
相同。
string
是類別System.String
的別名。 System.Object的
其他列表。 SByte
感謝Jon Skeet爲此。
void
是不是像string
。在C#中使用void
的幾乎所有情況下,編譯器都會對其進行特殊處理,例如在void
- 「返回」方法中不要求return
語句,並且不允許return
語句的表達式帶有「值「的類型void
。 typeof(void)
是void
實際上被視爲常規類型的少數情況之一。它有兩種方式:編譯器可以假定任何非void
的類型都不應得到void
的特殊處理。允許使用其他方法來拼寫void
會使C#更復雜,並且沒有理由不需要它。
請參閱http://stackoverflow.com/a/6408995/44620 –