「プリミティブ型」と「組み込み値型」 質問する

「プリミティブ型」と「組み込み値型」 質問する

最近、Array.SetValue(Int32) メソッドを使用しているときに C# で例外が発生しました。例外は次のとおりです。

ソース タイプがプリミティブ タイプではないか、変換を実行できないため、ソース タイプからターゲット タイプに拡張できません。

「プリミティブ」という言葉への言及には少々驚きました。なぜなら、これらの型は組み込み型と呼ばれる傾向があり、「プリミティブ型」という用語は非公式な用語であると思っていたからです。「プリミティブ」型と「組み込み値型」の違いは何でしょうか。C# 言語仕様にはプリミティブ型の定義が見つかりません。

ベストアンサー1

プリミティブ型はC#言語仕様では定義されていません。.NET自体で定義されており、プリミティブ型に関する最良のリファレンスは、Type.IsPrimitiveMSDN で、具体的には、「備考」セクションに使用可能なプリミティブ型がリストされています。

完全なリファレンスを得るために、これらはCLI 仕様(セクションI.8.2.2):

一般的な考えとは反対に、型に対応するキーワードがあるからといってないこれをプリミティブ型にする場合、最適な例はおそらく ですstring

一方、値型はプリミティブである場合とそうでない場合があります。CLI 仕様で定義されているものに加えて、.NET Framework には「組み込み」の値型がたくさんありますが、それらはプリミティブとして分類されていません。良い例は次のとおりです。DateTimeこれはstruct.NET Framework によって提供されるもので、その定義によれば「組み込み値型」とみなすことができます。値型の詳細については、こちらを参照してください (もちろん組み込み値型についても説明します)。ここ

おすすめ記事