English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C# データ型

C#は強い型の言語です。これは、変数が格納する値の型を宣言する必要があることを意味します。例えば、整数、浮動小数点数、10進数、テキストなどです。

以下は異なるデータ型の変数の宣言と初期化が行われています。

例:異なるデータ型の変数
string stringVar = "Hello World!!"; 100;
int intVar = 10.2f;
float floatVar =
char charVar = 'A';

bool boolVar = true;

C#ではデータ型は主に2種類に分類されます:値型と参照型です。値型にはシンプル型(例えばint、float、boolおよびchar)、エnum型、構造体型およびNullable値型が含まれます。参照型にはクラス型、インターフェース型、デリゲート型および配列型が含まれます。次の章で詳細に値型と参照型について説明します。

C#の予期されるデータ型

タイプC#にはいくつかの予期される値型と参照型が含まれています。以下の表に予期されるデータ型が示されています:説明、範囲、
byte8 lビット無符号整数型、 255
sbyte8 u-128 ~ 127
short16 u-32,768 ~ 32,767
ushort 16 lビット無符号整数型、 65,535
int32 u-2,147,483,648

2,147,483,647


uint32 lビット無符号整数型、 4,294,967,295接尾辞、
long64 u-9,223,372,036,854,775,808

9,223,372,036,854,775,807
ビット有符号整数型、
ulong64 lビット無符号整数型、 18,446,744,073,709,551,615ul
float32 ビット精度の単精度浮動小数点型-3.402823e38 ~ 3.402823e38f
double64 ビット精度の双精度浮動小数点型-1.79769313486232e308 ~ 1.79769313486232e308d
decimal128 ビット精度の十進値、28-29 有効桁数(+ または-)1.0 x 10e-28  ~ 7.9 x 10e28m
char16 ビットUnicode文字どの有効な文字でも、例えばa,*,\x0058 (hex),または\u0058 (Unicode)
bool8 ビット論理true/false値TrueまたはFalse
objectすべてのタイプの基底クラス

string

Unicode文字シーケンス



DateTime日期と時間を示します0:00:00am 1/1/01

11:59:59pm 12/31/9999

上表に示されるように、各データ型(文字列やオブジェクトを除く)には値範囲があります。値がデータ型の許容範囲を超える場合、コンパイラはエラーを出力します。例えば、intデータ型の範囲は-2,147,483,648~2,147,483,647したがって、割り当てられた値がこの範囲にない場合、コンパイラはエラーを出力します。

    例:コンパイル時エラー

// コンパイル時エラー:'long'型を'int'型に暗黙的に変換できません。
int i = 21474836470;

無符号整数、long、float、doubleおよびdecimalの値はそれぞれu、l、f、dおよびmで接尾辞を付ける必要があります。

uint ui = 100u;
float fl = 10.2f;
long l = 45755452222222l;
ulong ul = 45755452222222ul;
double d = 11452222.555d;
decimal mon = 1000.15m;

別名と.NETタイプ

予期されたデータ型は.NETタイプ(CLRクラス)の名前の別名です。以下の表に予期されるデータ型の別名と関連する.NETクラス名が示されています。

別名.NETタイプタイプ
byteSystem.Bytestruct
sbyteSystem.SBytestruct
intSystem.Int32struct
uintSystem.UInt32struct
shortSystem.Int16struct
ushortSystem.UInt16struct
longSystem.Int64struct
ulongSystem.UInt64struct
floatSystem.Singlestruct
doubleSystem.Doublestruct
charSystem.Charstruct
boolSystem.Booleanstruct
objectSystem.ObjectClass
stringSystem.StringClass
decimalSystem.Decimalstruct
DateTimeSystem.DateTimestruct

これは、intまたはIntを定義するかどうかに関わらず、32、変数はすべて同じです。

int i = 345;
Int32 i = 345;// 同上

型変換

あるデータ型の値はC#で自動的に異なるデータ型に変換されることがあります。これを暗黙的な変換といいます。

int i = 345;
float f = i;
Console.WriteLine(f); //出力:345

上記の例では、整数型変数iの値がfloat型の変数fに割り当てられているが、この変換操作はC#で事前に定義されています。

以下は暗黙的なデータ型変換表です。

暗黙的な変換
sbyteshort、int、long、float、double、decimal
byteshort、ushort、int、uint、long、ulong、float、double、decimal
shortint、long、float、doubleまたはdecimal
ushortint、uint、long、ulong、float、doubleまたはdecimal
intlong、float、doubleまたはdecimal
uintlong、ulong、float、doubleまたはdecimal
longfloat、doubleまたはdecimal
ulongfloat、doubleまたはdecimal
charushort、int、uint、long、ulong、float、doubleまたはdecimal
floatDouble

int、uint、longまたはulongからfloatへの変換、およびlongまたはulongからdoubleへの変換は精度の損失が発生する可能性があります。データ型間の暗黙的な変換はchar型にはありません。

ただし、すべてのデータ型が他のデータ型に暗黙的に変換されるわけではありません。例えば、int型は暗黙的にuintに変換できません。明示的に指定する必要があります。以下のように。

public static void Main()
{
    int i = 100;
    uint u = (uint) i;
    Console.Write(i);
}

上記の例では、整数iが括弧(uint)でuintを指定して明示的にuintに変換されます。これにより整数がuintに変換されます。