1

重複の可能性:
System.Void とは?
System.Void ではないのはなぜですか?

の使用が許可されていないことに気付きましたtypeof(System.Void)。でもtypeof(void)許される。使う時typeof(System.String)typeof(string)違いはありません。

これはなぜですか?

4

3 に答える 3

2

これは、C# がオリジナルの C フレーバーを維持するためにエイリアスを定義するためです。

.NET Framework は特定の命名規則を使用します。たとえば、クラス名は大文字で始まる必要があると規定されています。したがって、String-- これは C# のネイティブ型ではなく、System名前空間で定義された .NET クラスです -- は、実際には と呼ばれます。ファイルに がある場合は略して、System.Stringと呼ばれます。Stringusing System;

C# はstringのエイリアスとして定義されているSystem.Stringため、コードは C やその他の C ベースの言語 (C++、Java など) と同じように見えます。より読みやすいと思います。同様に、intは と同じSystem.Int32です。

于 2012-10-17T08:39:03.873 に答える
1

voidのようではありませんstring。が C# で使用されるほとんどすべての場合、コンパイラvoidによって特別な扱いが与えられます。. が実際に通常の型として扱われる数少ないケースの 1 つです。そして、それは両方の方法で機能します。コンパイラは、の特別な扱いを受けるべきではない型を想定できます。他のスペル方法を許可すると、C# の解釈がより複雑になり、それが必要になる理由はありません。returnvoidreturnvoidtypeof(void)voidvoidvoidvoid

于 2012-10-17T08:47:45.460 に答える
0

stringclass のエイリアスですSystem.String

その他の別名リスト

  • オブジェクト: System.Object
  • 文字列: System.String
  • bool: System.Boolean
  • バイト: System.Byte
  • sbyte: System.SByte
  • 短い: System.Int16
  • ushort: System.UInt16
  • 整数: System.Int32
  • ユニット: System.UInt32
  • 長い: System.Int64
  • ulong: System.UInt64
  • float: System.Single
  • double: System.Double
  • 10 進数: System.Decimal
  • char: System.Char

Jon Skeetに感謝します。

于 2012-10-17T08:35:52.737 に答える