Jesse Liberty の Learning C# ブックの中で、彼は「あるタイプのオブジェクトを別のタイプのオブジェクトに変換できます。これをキャストと呼びます」と述べています。
以下のコードから生成された IL を調べると、キャストされた割り当てが変換された割り当てと同じことをしていないことがはっきりとわかります。前者では、ボックス化/ボックス化解除が発生していることがわかります。後者では、convert メソッドの呼び出しを確認できます。
結局、それはばかげた意味の違いにすぎないことはわかっていますが、変換するための別の単語をキャストしているだけです。意地悪をするつもりはありませんが、これに関する誰かの直感には興味がありません。意見はここでは考慮しません。キャストと変換が同じものであるかどうかを確認または否定する決定的な参照を誰かが指摘できますか?
object x;
int y;
x = 4;
y = ( int )x;
y = Convert.ToInt32( x );
ありがとうございました
rp
明示的/暗黙的に関するマットのコメントの後に追加されたメモ:
暗黙的/明示的な違いはないと思います。私が投稿したコードでは、どちらの場合も変更が明示的です。暗黙的な変換は、int に short を割り当てるときに発生するものです。
Sklivvz へのメモ:
私は、ジェシー・リバティの(それ以外の場合は、通常は明快で明快な)言葉遣いが緩いという私の疑いが正しいことを確認したかったのです。ジェシー・リバティは言葉遣いが少し緩いなと思いました。キャストはオブジェクト階層でルーティングされることを理解しています。つまり、整数から文字列にキャストすることはできませんが、System.Exception から派生したカスタム例外から System.Exception にキャストすることはできます。
ただし、int から文字列にキャストしようとすると、値を「変換」できなかったとコンパイラが通知するのは興味深いことです。思ったよりもジェシーが正解かも!