C#プログラミングにおいて、char型は文字を扱うためのデータ型です。
そこで本記事では、char型の仕様や使い方をサンプルコードを交えながら解説していきます。
char型とは
char型は、C#のデータ型の一つで、文字を表現するために使用されます。
char型は、16ビットの符号なし整数として定義されており、Unicode文字セットの1文字を表現することができます。
また、char型は、シングルクォーテーション('
)で囲まれた1文字をリテラルとして表現します。例えば、’A’や’あ’などです。 以下にサンプルコードを示します。
char c1 = 'A';
char c2 = 'あ';
このように、char型変数にはシングルクォーテーションで囲まれた1文字が代入されます。
char型の初期化方法
char型の変数を初期化する方法について説明します。 char型の変数を初期化するには、以下のように記述します。
char myChar = 'A';
上記の例では、myCharという名前のchar型の変数を宣言し、'A'
という文字で初期化しています。シングルクォーテーションで囲まれた1文字がchar型として扱われます。
また、以下のようにUnicodeコードポイントを指定することもできます。
char myChar = '\u0041';
上記の例では、myCharという名前のchar型の変数を宣言し、Unicodeコードポイントが0041(16進数)である’A’という文字で初期化しています。
バックスラッシュuから始まる4桁または8桁の16進数表現がUnicodeコードポイントです。 なお、char型はnull許容型ではないため、null値で初期化することはできません。
char型の比較
C#では、char型同士を比較演算子==
や!=
を使用して、2つのchar型を比較することができます。
例えば、以下のようなコードを考えてみましょう。
char c1 = 'A';
char c2 = 'B';
if (c1 == c2)
{
Console.WriteLine("c1とc2は同じ文字です。");
}
else
{
Console.WriteLine("c1とc2は異なる文字です。");
}
この場合、出力結果はc1とc2は異なる文字です。
となります。
これは、変数c1
に格納された文字'A'
と変数c2
に格納された文字’B’が異なるためです。 また、char型同士の大小関係も比較することができます。以下のようなコードを考えてみましょう。
char c1 = 'A';
char c2 = 'B';
if (c1 < c2)
{
Console.WriteLine("c1はc2よりも前の文字です。");
}
else if (c1 > c2)
{
Console.WriteLine("c1はc2よりも後ろの文字です。");
}
else
{
Console.WriteLine("c1とc2は同じ文字です。");
}
この場合、出力結果は「c1はc2よりも前の文字です。」となります。
これは、変数c1
に格納された文字'A'
が変数c2
に格納された文字'B'
よりも前のアルファベットであるためです。
このような文字列の大小比較はソートプログラムを作成するときなどに役立ちます。
char型の変換
char型は文字を表すデータ型ですが、中身は文字コードであるため整数型との相互変換が可能です。
char型からint型への変換
char型の値をint型に変換する場合、単純にキャスト演算子を使用します。
char c = 'A';
int i = (int)c;
Console.WriteLine(i); // 出力結果:65
上記の例では、char型の'A'
をint型にキャストしています。
ASCIIコード表において'A'
は65番目に位置しているため、出力結果も65
となります。
int型からchar型への変換
int型からchar型への変換も同様にキャスト演算子を使用します。ただし、範囲外の値を指定した場合はオーバーフローやアンダーフローを引き起こすため注意が必要です。
int i = 65;
char c = (char)i;
Console.WriteLine(c); // 出力結果:A
上記の例では、int型の65
をchar型にキャストしています。ASCIIコード表において65番目に位置する文字は'A'
であるため、出力結果も’A’となります。
char型の文字列
char型は、1文字だけを扱うことができるデータ型です。しかし、複数の文字を扱いたい場合には、char型の配列を使用する必要があります。
例えば、以下のようにchar型の配列を宣言して初期化することで、文字列を扱うことができます。
char[] myString = {'H', 'e', 'l', 'l', 'o'};
このように宣言されたmyString変数は、”Hello”という文字列を表します。
また、string型でも同様に文字列を扱うことができます。
string myString = "Hello";
C#で文字列を扱う場合、string型のほうが汎用性が優れているため、文字列を扱う場合はchar型配列ではなくstring型を使用するのが一般的です。
char型の注意点
C#では、char型はUnicodeエンコーディングを使用しています。
Unicodeエンコーディングは世界中の言語や記号を表現するための規格であり、1つの文字に対して16ビット(2バイト)を使用します。
そのため、char型は2バイト分のメモリ領域を必要とします。
C言語など一部の言語ではchar型は1バイトですが、C#では2バイト必要なので注意しましょう。