キャストと型変換(回答)

回答

  • A. int balance = (int)(float)amountRef;

01 public static void Calculate(float amount)
02 {
03 object amountRef = amount;
04 int balance = (int)(float)amountRef;
05 Console.WriteLine(balance);
06 }

解説

始めに、C#(.NET)では、定義済みの暗黙の変換ができます。

今回の場合、float型が変換元の場合はdouble型が可能ですが、int型には暗黙の変換はできません。

Object型からint型にキャストしているB.ですが、実行するとSystem.InvalidCastExceptionが発生します。

Object型からキャストせずに直接値をfloat型に設定しているC.ですが、コードCS0266が発生するため、コンパイルが通りません(ビルドができません)。

Object型からdouble型、int型の順にキャストしているD.ですが、実行するとSystem.InvalidCastExceptionが発生します。

そのため、答えはObject型からfloat型、int型に変換しているA.が正解です。

参考