Csharp-data-types
C#-データ型
C#の変数は、次のタイプに分類されます-
- 値タイプ
- 参照タイプ
- ポインターの種類
値のタイプ
値型変数には、値を直接割り当てることができます。 これらは System.ValueType クラスから派生しています。
値タイプにはデータが直接含まれます。 例としては、 int、char、およびfloat があり、それぞれ数値、アルファベット、および浮動小数点数が格納されます。 int 型を宣言すると、システムは値を保存するためにメモリを割り当てます。
次の表に、C#2010で使用可能な値の種類を示します-
Type | Represents | Range | Default Value |
---|---|---|---|
bool | Boolean value | True or False | False |
byte | 8-bit unsigned integer | 0 to 255 | 0 |
char | 16-bit Unicode character | U +0000 to U +ffff | '\0' |
decimal | 128-bit precise decimal values with 28-29 significant digits | (-7.9 x 1028 to 7.9 x 1028)/100 to 28 | 0.0M |
double | 64-bit double-precision floating point type | (/-)5.0 x 10^-324^ to (/-)1.7 x 10308 | 0.0D |
float | 32-bit single-precision floating point type | -3.4 x 1038 to + 3.4 x 1038 | 0.0F |
int | 32-bit signed integer type | -2,147,483,648 to 2,147,483,647 | 0 |
long | 64-bit signed integer type | -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 | 0L |
sbyte | 8-bit signed integer type | -128 to 127 | 0 |
short | 16-bit signed integer type | -32,768 to 32,767 | 0 |
uint | 32-bit unsigned integer type | 0 to 4,294,967,295 | 0 |
ulong | 64-bit unsigned integer type | 0 to 18,446,744,073,709,551,615 | 0 |
ushort | 16-bit unsigned integer type | 0 to 65,535 | 0 |
特定のプラットフォームで型または変数の正確なサイズを取得するには、 sizeof メソッドを使用できます。 式_sizeof(type)_は、オブジェクトまたはタイプのストレージサイズをバイト単位で生成します。 以下は、任意のマシンで_int_型のサイズを取得する例です-
using System;
namespace DataTypeApplication {
class Program {
static void Main(string[] args) {
Console.WriteLine("Size of int: {0}", sizeof(int));
Console.ReadLine();
}
}
}
上記のコードをコンパイルして実行すると、次の結果が生成されます-
Size of int: 4
参照タイプ
参照タイプには、変数に格納された実際のデータは含まれませんが、変数への参照が含まれます。
つまり、メモリの場所を指します。 複数の変数を使用すると、参照型はメモリの場所を参照できます。 メモリー位置のデータが変数の1つによって変更されると、他の変数はこの値の変更を自動的に反映します。 組み込み*参照タイプの例は、 *object 、* dynamic、、および *string です。
オブジェクトタイプ
- オブジェクト型*は、C#Common Type System(CTS)のすべてのデータ型の究極の基本クラスです。 オブジェクトはSystem.Objectクラスのエイリアスです。 オブジェクトタイプには、他のタイプ、値タイプ、参照タイプ、定義済みまたはユーザー定義のタイプの値を割り当てることができます。 ただし、値を割り当てる前に、型変換が必要です。
値型がオブジェクト型に変換されるとき、それは boxing と呼ばれ、オブジェクト型が値型に変換されるとき、それは unboxing と呼ばれます。
object obj;
obj = 100;//this is boxing
ダイナミックタイプ
動的データ型変数には、任意のタイプの値を格納できます。 これらのタイプの変数のタイプチェックは、実行時に行われます。
動的型を宣言するための構文は-
dynamic <variable_name> = value;
例えば、
dynamic d = 20;
動的型はオブジェクト型に似ていますが、オブジェクト型変数の型チェックはコンパイル時に行われるのに対して、動的型変数の型チェックは実行時に行われます。
文字列タイプ
*String Type* を使用すると、文字列値を変数に割り当てることができます。 文字列型は、System.Stringクラスのエイリアスです。 オブジェクトタイプから派生します。 文字列型の値は、引用符付きと@quotedの2つの形式の文字列リテラルを使用して割り当てることができます。
例えば、
String str = "Tutorials Point";
@quoted文字列リテラルは次のようになります-
@"Tutorials Point";
ユーザー定義の参照タイプは、クラス、インターフェース、またはデリゲートです。 これらのタイプについては、後の章で説明します。
ポインターの種類
ポインタ型変数には、別の型のメモリアドレスが格納されます。 C#のポインターには、CまたはC ++のポインターと同じ機能があります。
ポインタ型を宣言するための構文は-
type* identifier;
例えば、
char* cptr;
int* iptr;
ポインターの種類については、「安全でないコード」の章で説明します。