1. ホーム
  2. c#

[解決済み] キャスティングとコージャスの違いは何ですか?

2023-02-26 17:47:57

質問

ネット上の説明では、この2つの用語はほとんど同じように使われていますし、私が参照した教科書の多くも、この区別について完全には明確ではありません。

この違いを説明する明確で簡単な方法をご存知ですか?

型変換 (と呼ばれることもあります。 型キャスト )

ある型の値を、別の型を想定しているコンテキストで使用すること。

非変換型キャスト (と呼ばれることがあります。 タイプパン )

根本的なビットを変更しない変更。

強制(Coercion)

コンパイラがある型の値を別の型の値に自動的に変換するプロセスで、その第二の型が周囲の文脈で必要とされる場合。

どのように解決するのですか?

タイプ変換 :

言葉 変換 は、あるデータ型から別のデータ型に暗黙的または明示的に値を変更することを指します。例えば、16ビット整数から32ビット整数へ。

この単語は coercion は暗黙の変換を表すのに使われます。

この単語は キャスト という言葉は、ビットパターンの再解釈か実際の変換かに関係なく、(暗黙の変換ではなく)明示的な型変換を指すことが一般的です。

つまり、coercionは暗黙的、castは明示的、conversionはそのいずれかを指します。


いくつかの例( と同じソース ) :

強制(暗黙)。

double  d;
int     i;
if (d > i)      d = i;

キャスト(明示)。

double da = 3.3;
double db = 3.3;
double dc = 3.4;
int result = (int)da + (int)db + (int)dc; //result == 9