- 値のタイプ。
- 参照タイプ。
- ポインタの種類。
値の型
C# の値の型は System.ValueType クラスから派生し、値の型の変数に特定の値を直接割り当てることができます。値型の変数を宣言すると、システムが変数の値を格納するメモリ領域を自動的に確保しますが、変数が占有するメモリのサイズはシステムによって異なりますので注意してください。
次の表に示すように、C# には多くの値の型があります。
タイプ | 説明 | 範囲 | デフォルト |
---|---|---|---|
bool | ブール値 | 正しいか間違っているか | False |
byte | 8ビット符号なし整数 | 0~255 | 0 |
char | 16 ビット Unicode 文字 | U+0000 ~ U+ffff | ‘\0’ |
decimal | 有効数字 28 ~ 29 桁の 128 ビットの正確な 10 進数値 | (-7.9×10 28 ~ 7.9×10 28 ) / 10 0 ~ 28 | 0.0M |
double | 64ビット倍精度浮動小数点 | (+/-)5.0 x 10 -324 ~ (+/-)1.7 x 10 308 | 0.0D |
float | 32ビット単精度浮動小数点 | -3.4×10 38 ~ +3.4×10 38 | 0.0F |
int | 32ビット符号付き整数型 | -2,147,483,648 ~ 2,147,483,647 | 0 |
long | 64ビット符号付き整数型 | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 | 0L |
sbyte | 8ビット符号付き整数型 | -128~127 | 0 |
short | 16ビット符号付き整数型 | -32,768 ~ 32,767 | 0 |
uint | 32ビット符号なし整数型 | 0 ~ 4,294,967,295 | 0 |
ulong | 64ビット符号なし整数型 | 0 ~ 18,446,744,073,709,551,615 | 0 |
ushort | 16ビット符号なし整数型 | 0~65,535 | 0 |
型または変数の正確なサイズを取得したい場合は、sizeof メソッドを使用できます。サンプル コードは次のとおりです。
using System;
namespace it-kiso.com{
class Program {
static void Main(string[] args) {
Console.WriteLine("int型のサイズは: {0}", sizeof(int));
Console.ReadLine();
}
}
}
上記のコードをコンパイルして実行すると、結果は次のようになります。
int 型のサイズは: 4
参照型
参照型の変数は実際のデータの値を格納するのではなく、データ(オブジェクト)への参照、つまりメモリ上のデータの位置を格納します。複数の変数が同じメモリアドレスを参照している場合、いずれかの変数がメモリ内のデータの値を変更すると、そのメモリアドレスを参照しているすべての変数の値が変更されます。 C# の組み込み参照型には、Object (オブジェクト)、Dynamic (動的)、および string (文字列) が含まれます。
1) オブジェクトの種類 (オブジェクト)
オブジェクト型は、C# 共通型システム (Common Type System: CTS) のすべてのデータ型の最終基本クラスであり、Object は System.Object クラスのエイリアスです。オブジェクト型には任意の型の値を割り当てることができますが、値を割り当てる前に型変換が必要です。
値型をオブジェクト型に変換するプロセスは「ボックス化」と呼ばれ、オブジェクト型を値型に変換するプロセスは「アンボックス化」と呼ばれます。ボックス化されたデータのみをボックス化解除できることに注意してください。
2) ダイナミック型(Dynamic)
動的に型指定された変数には任意の型の値を格納でき、プログラムの実行中に型がチェックされます。動的型の宣言構文は次のとおりです。
dynamic <variable_name> = value;
例えば:
dynamic d = 20;
動的型付けはオブジェクト型付けに似ていますが、オブジェクト型変数はコンパイル時に型チェックされるのに対し、動的型変数はプログラム実行時に型チェックされます。
3) 文字列型(String)
文字列型の変数を使用すると、この変数に文字列を割り当てることができます。文字列型は、String クラスを通じて作成する必要があります。String クラスは、Object (Object) 型から派生した System.String クラスのエイリアスです。 。 C# で文字列型を定義するには 2 つの方法があり、それぞれ" "
と@" "
を使用します。
サンプルコードは次のとおりです。
String str = “https://it-kiso.com/”;
@”https://it-kiso.com/”;
@" "
の形式で宣言された文字列は「逐語的文字列」と呼ばれ、逐語的文字列はエスケープ文字\
を通常の文字として扱います。たとえば、 string str = @"C:\Windows";
は次と同等です。 string str = "C:\\Windows";
.
また、 @" "
の形式で宣言された文字列内では任意に改行を使用することができ、改行とインデントスペースも文字列の長さにカウントされます。
C# 言語のポインタは、ロケータまたはデジグネータとも呼ばれる変数であり、別の種類のメモリ アドレスを格納できます。 C# のポインターには、C または C++ のポインターと同じ機能があります。
ポインター型の宣言構文は次のとおりです。
type* identifier;
例えば:
char* cptr;
int* iptr;
ここでは、ポインターについて簡単に理解するだけで十分です。後の章で詳しく説明します。