English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C#は強い型の言語です。これは、変数が格納する値の型を宣言する必要があることを意味します。例えば、整数、浮動小数点数、10進数、テキストなどです。
以下は異なるデータ型の変数の宣言と初期化が行われています。
例:異なるデータ型の変数 string stringVar = "Hello World!!"; 100; int intVar = 10.2f; float floatVar = char charVar = 'A';
bool boolVar = true;
C#の予期されるデータ型
タイプ | C#にはいくつかの予期される値型と参照型が含まれています。以下の表に予期されるデータ型が示されています: | 説明、 | 範囲、 |
---|---|---|---|
byte | 8 l | ビット無符号整数型、 255 | |
sbyte | 8 u | -128 ~ 127 | |
short | 16 u | -32,768 ~ 32,767 | |
ushort | 16 l | ビット無符号整数型、 65,535 | |
int | 32 u | -2,147,483,648 ~ 2,147,483,647 | |
uint | 32 l | ビット無符号整数型、 4,294,967,295 | 接尾辞、 |
long | 64 u | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 | ビット有符号整数型、 |
ulong | 64 l | ビット無符号整数型、 18,446,744,073,709,551,615 | ul |
float | 32 ビット精度の単精度浮動小数点型 | -3.402823e38 ~ 3.402823e38 | f |
double | 64 ビット精度の双精度浮動小数点型 | -1.79769313486232e308 ~ 1.79769313486232e308 | d |
decimal | 128 ビット精度の十進値、28-29 有効桁数 | (+ または-)1.0 x 10e-28 ~ 7.9 x 10e28 | m |
char | 16 ビットUnicode文字 | どの有効な文字でも、例えばa,*,\x0058 (hex),または\u0058 (Unicode) | |
bool | 8 ビット論理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タイプ(CLRクラス)の名前の別名です。以下の表に予期されるデータ型の別名と関連する.NETクラス名が示されています。
別名 | .NETタイプ | タイプ |
---|---|---|
byte | System.Byte | struct |
sbyte | System.SByte | struct |
int | System.Int32 | struct |
uint | System.UInt32 | struct |
short | System.Int16 | struct |
ushort | System.UInt16 | struct |
long | System.Int64 | struct |
ulong | System.UInt64 | struct |
float | System.Single | struct |
double | System.Double | struct |
char | System.Char | struct |
bool | System.Boolean | struct |
object | System.Object | Class |
string | System.String | Class |
decimal | System.Decimal | struct |
DateTime | System.DateTime | struct |
これは、intまたはIntを定義するかどうかに関わらず、32、変数はすべて同じです。
int i = 345; Int32 i = 345;// 同上
あるデータ型の値はC#で自動的に異なるデータ型に変換されることがあります。これを暗黙的な変換といいます。
int i = 345; float f = i; Console.WriteLine(f); //出力:345
上記の例では、整数型変数iの値がfloat型の変数fに割り当てられているが、この変換操作はC#で事前に定義されています。
以下は暗黙的なデータ型変換表です。
暗黙的な変換 | ~ |
---|---|
sbyte | short、int、long、float、double、decimal |
byte | short、ushort、int、uint、long、ulong、float、double、decimal |
short | int、long、float、doubleまたはdecimal |
ushort | int、uint、long、ulong、float、doubleまたはdecimal |
int | long、float、doubleまたはdecimal |
uint | long、ulong、float、doubleまたはdecimal |
long | float、doubleまたはdecimal |
ulong | float、doubleまたはdecimal |
char | ushort、int、uint、long、ulong、float、doubleまたはdecimal |
float | Double |
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に変換されます。