私は、JavaとC#での「プリミティブ」の使用と、それらの違い(存在する場合)を理解しようとしています。私はSOについて一連の質問をしましたが、いくつかの回答は問題を明確にするのではなく混乱させるようです。いくつかの回答(およびいくつかのMSドキュメント)は矛盾したステートメントを提供しているように見えます。SOから
およびMSから:http://msdn.microsoft.com/en-us/library/ms228360%28VS.80,lightweight%29.aspx-
「構造体はクラスに非常に似ています」-「クラスはデータ型をInt32
ラップします」- int
「一方、C#のすべてのプリミティブデータ型はSystem名前空間のオブジェクトです。データ型ごとに、短い名前またはエイリアスが提供されます。たとえば、int
はSystem.Int32の短い名前です。」
私の混乱は主にC#にあります(私はしばらくの間Javaをプログラムしました)。
編集次の段落は@JonSkeetによって正しいことが確認されています
- Javaには2つのタイプ(プリミティブとクラス)があります。「値型」という言葉は、プリミティブ(広く使用されていませんが)の同義語であり、クラスの「参照型」である可能性があります。Javaはプリミティブ(int)をクラス(整数)に「ラップ」し、これらのクラスは他のクラスの完全な能力を備えています(null、コレクションで使用など)
編集@JonはC#について非常に明確な声明を出しているので、提案された真実を削除して彼の答えを参照します。
さらなる質問:これらの用語の実際の使用法についてのコンセンサスはありますか?コンセンサスがあれば、それが明確に説明されていることに非常に感謝します。それ以外の場合は、用語が混乱しているため、使用が制限されていると思います。
まとめ非常に明確な回答をありがとうございます。これを本当に理解している人々の間にはコンセンサスがあり(@Jonからの受け入れられた回答を参照)、MSドキュメントは一貫しています(ただし、場所によってはJavaを参照しており、C#と誤解しています)