2.5 基本的なデータ型
.NETでは、クラスライブラリに多くの型が定義されていて、さらに自分で新たに定義することもできるので、C#では無限の数のデータ型を扱うことができます。しかし、一部の型はコンパイラによって特別扱いされます。例2-9で示したように、文字列に数値を加算すると、数値を文字列に変換してから最初の文字列に付け加えます。実際には、数値に限らず、他のデータ型も同様に扱われます。コンパイルされたコードでString.Concatメソッドが呼び出されていて、文字列以外の引数がこのメソッドに渡されるとその引数のToStringメソッドが呼び出されてから連結されます。すべての型がToStringメソッドを持っているので、文字列にあらゆる型の値を追加できます。
この機能は便利ですが、それは文字列がC#コンパイラによって識別され、特別扱いされているからです(このような+演算子特有の文字列処理はC#仕様で定義されています)。C#では、文字列に限らず、特定の数値データ型、ブール型、タプルと呼ばれる種類の型、およびdynamicとobjectという2つの特殊型にもさまざまな特別な処理が行われます。そのほとんどはC#だけでなくランタイムにとっても特別でもあり、(BigIntegerを除く)ほぼすべての数値型が中間言語(IL:Intermediate Language)で直接サポートされており、ランタイムはbool型、string型、object型をあらかじめ識別できるようになっています。
2.5.1 数値型
C#は整数と浮動小数点をサポートしています。表2-1に示すように、整数型は、符号付きと符号なしに加えて、サイズもさまざまです。最も一般的に使う整数型はintです。その理由は、実用的な範囲の値を表せるだけのサイズでありながら、.NETがサポートしているすべてのCPU上で効率的に動作するサイズだからです(より大きなサイズのデータ型はCPUが直接扱えない場合もあり、マルチスレッドコードでは読み込みと書き込みが32ビット型に対してアトミックでも ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access