次のコードがあるとします。
string source = "Some Unicode String";
foreach( char value in source ) {
int y = (int)value;
}
char から int へのキャストが失敗する可能性はありますか (そして、どのような状況で)?
char
からへの変換は、どんな値int
でも失敗しません。char
.NET Framework は、Char 構造体を使用して Unicode 文字を表します。Unicode 標準は、コード ポイントと呼ばれる一意の 21 ビット スカラー番号で各 Unicode 文字を識別し、コード ポイントを 1 つ以上の 16 ビット値のシーケンスにエンコードする方法を指定する UTF-16 エンコード形式を定義します。各 16 ビット値の範囲は 16 進数 0x0000 ~ 0xFFFF で、Char 構造体に格納されます。 Char オブジェクトの値は、その 16 ビットの数値 (序数) 値です。