2017-05-15 15 views
5

dynamicの型チェックが実行時に実行されるコンパイル時に、Objectの型チェックが実行されます。次に、どのように動的値をObjectに入れることができますか?C#の動的データ型のボクシング?

dynamic dynamic = "This is dynamic data type"; 
Object obj = dynamic; 
Console.WriteLine(obj); 
+0

変数名に予約語を使用しないことを考慮してください。 – Rahul

+1

@Rahul 'dynamic'は予約語ではありません。 – Servy

+1

@Servy、しかし良い練習ではないでしょうか? – Rahul

答えて

9

dynamicが既に常にobjectである - それは、基本的にが呼び出しが起こるかの異なるルールで、objectとしてを実現しています。したがって、dynamicobjectの間にはボックスはありません。さらに、stringリテラルはobjectです。したがって、ボックスには何もありません

ここではボクシングは必要ありません。既にobjectがあります。 dynamicからobjectへの暗黙的な型変換はノーオペレーションです。

+0

私は両方ともオブジェクトであると理解していますが、動的データ型をボックスする必要はありませんが、動的データ型の値で実行時に決定する必要がある場合、C#コンパイラがObjectのデータ型を決定する方法時間? – Nofi

+1

@ Nofi決めることは何もない...文字通り決定を下すことはありません。既存の参照変数を別の参照変数に格納するだけです。 ILレベルでは、文字列(ldstr)をロードして変数(stloc)に格納し、変数(ldloc)をロードして別の変数(stloc)に格納します。 –

+0

私はあなたのポイントを得た – Nofi

関連する問題