ホームページ  >  記事  >  バックエンド開発  >  C# での型キャスト

C# での型キャスト

王林
王林オリジナル
2024-09-03 15:07:271135ブラウズ

C# における型キャストは、任意のデータ型を別のデータ型に割り当てて「型キャスト」と呼ぶものとして定義されます。どのプログラミング言語でも、下位データ型の値を上位データ型の値に自動的にキャストできます。この状況ではデータの損失はありませんが、上位のデータ型値が下位のデータ型値に変換される場合には、データが失われる可能性があります。下位データ型から上位データ型への変換は C# コンパイラによって自動的に実行できますが、上位データ型から下位データ型への型キャストは明示的に型キャストする必要があります。これは「明示的なキャスト」として知られています。

long 値を int 値に変換する例を見てみましょう。これは明示的な型キャストです。

なぜ、より大きなデータ型からより小さなデータ型への明示的なキャストが必要なのでしょうか?

ちょっとした例えを考えてみましょう。そうすると、よくわかると思います。水のボトルが 2 本あり、1 つは 1 リットル、もう 1 つは 2 リットルです。 1リットルの水を2リットルの水筒に溢れさせることなく簡単に注ぐことができます。同様に、2リットルの水筒の水を1リットルに注ごうとすると、2リットルの水筒に1リットル以上の水が入っていると水が溢れる可能性があります。したがって、この場合、1 リットルの水のボトルが下位のデータ タイプで、2 リットルの水のボトルが上位のデータ タイプになります。たとえ水があふれる可能性があっても、お客様に承諾していただけるよう、1リットルの水ボトルに2リットルの水を注ぎたいと考えています。開発者が明確なアイデアを持っているのと同じように、上位のデータ型を下位のデータ型にキャストしようとしてもデータが失われる可能性があるため、開発者はそれを受け入れる必要があります。

C# でのキャストの種類

C# には 2 種類のキャストがあります。

  • 明示的な型キャスト
  • 暗黙的な型キャスト: 小さいデータ型から大きいデータ型への変換は、「暗黙的な型キャスト」と言われます。これは C# コンパイラによって自動的に行われます。データの損失はありません。

1.暗黙的な型キャスト

byte->short->int->long->float->double

コード:

Bigger_dataType  variableName=smaller_dataType_Value;

2.明示的な型キャスト

大きなデータ型から小さなデータ型への変換は、「明示的な型キャスト」と言われます。これは、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;
注: キャストは互換性のあるデータ型にのみ適用でき、数値と数値の変換のみを意味しますが、数値と文字列の逆はできません。そのため、サポートされていない例外が発生する可能性があります。

型変換のメソッド

  • ToBoolean: 型をブール値に変換します。
  • ToChar: 型を文字値に変換します。
  • ToByte: 値をバイト値に変換します。
  • ToDecimal: 値を小数点値に変換します。
  • ToDouble: 型を double データ型に変換します。
  • ToInt16: 型を 16 ビット整数に変換します
  • ToInt32: 型を 32 ビット整数に変換します
  • ToInt64: 型を 64 ビット整数に変換します
  • ToString: 指定された型を String に変換します
  • ToUInt16: 型を符号なし 16 ビット整数に変換します
  • ToUInt32: 型を符号なし 32 ビット整数に変換します
  • ToUInt64: 型を符号なし 64 ビット整数に変換します

C# で型キャストを実装する例

以下にいくつかの例を示します:

例 #1

暗黙的な型キャスト

コード:

//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);
}
}

出力:

C# での型キャスト

例 #2

より大きな型からより低い型への暗黙的な型キャストを試みています

コード:

//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);
}
}

出力:

C# での型キャスト

例 #3

明示的な型キャスト

コード:

//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>

出力:

C# での型キャスト

例 #4

事前定義されたメソッドを使用した明示的な型キャスト

コード:

//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# での型キャスト

結論

C# には 2 種類の型キャストがあります。1 つは暗黙的な型キャスト、もう 1 つは明示的な型キャストです。暗黙的な型キャストはコンパイラによって自動的に行われますが、この場合、データが失われる可能性があるため、明示的な型キャストを開発者が実行する必要があります。

以上がC# での型キャストの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:C# カスタム属性次の記事:C# カスタム属性