の使用が許可されていないことに気付きました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と呼ばれます。Stringusing System;
C# はstringのエイリアスとして定義されているSystem.Stringため、コードは C やその他の C ベースの言語 (C++、Java など) と同じように見えます。より読みやすいと思います。同様に、intは と同じSystem.Int32です。
voidのようではありませんstring。が C# で使用されるほとんどすべての場合、コンパイラvoidによって特別な扱いが与えられます。. が実際に通常の型として扱われる数少ないケースの 1 つです。そして、それは両方の方法で機能します。コンパイラは、の特別な扱いを受けるべきではない型を想定できます。他のスペル方法を許可すると、C# の解釈がより複雑になり、それが必要になる理由はありません。returnvoidreturnvoidtypeof(void)voidvoidvoidvoid
stringclass のエイリアスですSystem.String。
その他の別名リスト
Jon Skeetに感謝します。