の使用が許可されていないことに気付きましたtypeof(System.Void)
。でもtypeof(void)
許される。使う時typeof(System.String)
もtypeof(string)
違いはありません。
これはなぜですか?
の使用が許可されていないことに気付きましたtypeof(System.Void)
。でもtypeof(void)
許される。使う時typeof(System.String)
もtypeof(string)
違いはありません。
これはなぜですか?
これは、C# がオリジナルの C フレーバーを維持するためにエイリアスを定義するためです。
.NET Framework は特定の命名規則を使用します。たとえば、クラス名は大文字で始まる必要があると規定されています。したがって、String
-- これは C# のネイティブ型ではなく、System
名前空間で定義された .NET クラスです -- は、実際には と呼ばれます。ファイルに がある場合は略して、System.String
と呼ばれます。String
using System;
C# はstring
のエイリアスとして定義されているSystem.String
ため、コードは C やその他の C ベースの言語 (C++、Java など) と同じように見えます。より読みやすいと思います。同様に、int
は と同じSystem.Int32
です。
void
のようではありませんstring
。が C# で使用されるほとんどすべての場合、コンパイラvoid
によって特別な扱いが与えられます。. が実際に通常の型として扱われる数少ないケースの 1 つです。そして、それは両方の方法で機能します。コンパイラは、の特別な扱いを受けるべきではない型を想定できます。他のスペル方法を許可すると、C# の解釈がより複雑になり、それが必要になる理由はありません。return
void
return
void
typeof(void)
void
void
void
void
string
class のエイリアスですSystem.String
。
その他の別名リスト
Jon Skeetに感謝します。