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ビット型に対してアトミックでも ...
Get プログラミングC# 第8版 now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.