C# における型キャストは、任意のデータ型を別のデータ型に割り当てて「型キャスト」と呼ぶものとして定義されます。どのプログラミング言語でも、下位データ型の値を上位データ型の値に自動的にキャストできます。この状況ではデータの損失はありませんが、上位のデータ型値が下位のデータ型値に変換される場合には、データが失われる可能性があります。下位データ型から上位データ型への変換は C# コンパイラによって自動的に実行できますが、上位データ型から下位データ型への型キャストは明示的に型キャストする必要があります。これは「明示的なキャスト」として知られています。
long 値を int 値に変換する例を見てみましょう。これは明示的な型キャストです。
ちょっとした例えを考えてみましょう。そうすると、よくわかると思います。水のボトルが 2 本あり、1 つは 1 リットル、もう 1 つは 2 リットルです。 1リットルの水を2リットルの水筒に溢れさせることなく簡単に注ぐことができます。同様に、2リットルの水筒の水を1リットルに注ごうとすると、2リットルの水筒に1リットル以上の水が入っていると水が溢れる可能性があります。したがって、この場合、1 リットルの水のボトルが下位のデータ タイプで、2 リットルの水のボトルが上位のデータ タイプになります。たとえ水があふれる可能性があっても、お客様に承諾していただけるよう、1リットルの水ボトルに2リットルの水を注ぎたいと考えています。開発者が明確なアイデアを持っているのと同じように、上位のデータ型を下位のデータ型にキャストしようとしてもデータが失われる可能性があるため、開発者はそれを受け入れる必要があります。
C# には 2 種類のキャストがあります。
byte->short->int->long->float->double
コード:
Bigger_dataType variableName=smaller_dataType_Value;
大きなデータ型から小さなデータ型への変換は、「明示的な型キャスト」と言われます。これは、C# コンパイラによって自動的に行われるわけではありません。データが失われる可能性があります。これは開発者が明示的に行う必要があります。
byte->short、int、long、float、double
short->int、long、float、double
int->long、float、double
long->float、double
float->double
コード:
Smaller_dataType variableName=(Smaller_dataType)Bigger_dataType_Value;注: キャストは互換性のあるデータ型にのみ適用でき、数値と数値の変換のみを意味しますが、数値と文字列の逆はできません。そのため、サポートされていない例外が発生する可能性があります。
以下にいくつかの例を示します:
暗黙的な型キャスト
コード:
//including System package in C# using System; //Creating class public class ImplicitTypeCasting { // main method for application to run public static void Main(String []args) { //variable declaration and initialization int intType = 200; // Implicit int to long casting long longType = intType; // Implicit long to float casting float floatType = longType; // Printing output of implicit conversion variables Console.WriteLine("INT value after Implicit conversion: " +intType); Console.WriteLine("LONG value after Implicit conversion:" +longType); Console.WriteLine("FLOAT value after Implicit conversion: " +floatType); } }
出力:
より大きな型からより低い型への暗黙的な型キャストを試みています
コード:
//including System package in C# using System; //Creating class public class ImplicitCastingBiggerToSmaller { // main method for application to run public static void Main(String []args) { //variable declaration and initialization int intType = 200; // Trying to convert int to byte Implicitly but there is compile time error byte byteType = intType; // Trying to convert int to short Implicitly but there is compile time error short shortType = intType; // Printing output of implicit conversion variables Console.WriteLine("INT value after Implicit conversion: " +intType); Console.WriteLine("BYTE value after Implicit conversion:" +byteType); Console.WriteLine("SHORT value after Implicit conversion: " +shortType); } }
出力:
明示的な型キャスト
コード:
//including System package in C# using System; //Creating class public class ExplicitCastingBiggerToSmaller { // main method for application to run public static void Main(String []args) { //variable declaration and initialization int intType = 9999999; int intType1=120; // Trying to convert int to byte explicitly byte byteType = (byte)intType; byte byteType1 = (byte)intType1; // Trying to convert int to short explicitly short shortType = (short)intType; short shortType1 = (short)intType1; // Printing output of explicit conversion variables //Given int range is not in byte and short range so there must be loss of data result into incorrect output Console.WriteLine("BYTE value after Explicit conversion: " +byteType); Console.WriteLine("SHORT value after Explicit conversion: " +shortType); Console.WriteLine("\n"); // Printing output of explicit conversion variables //Given int range is in byte and short range so there no data loss Console.WriteLine("BYTE value after Explicit conversion: " +byteType1); Console.WriteLine("SHORT value after Explicit conversion: " +shortType1); } }<strong> </strong>
出力:
事前定義されたメソッドを使用した明示的な型キャスト
コード:
//including System package in C# using System; //Creating class public class ExplicitCastingBiggerToSmaller { // main method for application to run public static void Main(String []args) { //variable declaration and initialization int intType = 9999999; double doubleType=122.23; float floatType=222.222f; // Printing output of explicit convertion variables //By using C# predefined method for type casting Console.WriteLine("INT to STRING type value with predefined method convertion: "+Convert.ToString(intType)); Console.WriteLine("DOUBLE to INT type value with predefined method convertion: "+Convert.ToInt32(doubleType)); Console.WriteLine("FLOAT to INT type value with predefined method convertion: "+Convert.ToUInt32(floatType)); } }
出力:
C# には 2 種類の型キャストがあります。1 つは暗黙的な型キャスト、もう 1 つは明示的な型キャストです。暗黙的な型キャストはコンパイラによって自動的に行われますが、この場合、データが失われる可能性があるため、明示的な型キャストを開発者が実行する必要があります。
以上がC# での型キャストの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。