dynamic

C#4.0では、dynamicを使って、動的型付け変数を宣言できる。

dynamic - C# リファレンス | Microsoft Docs
dynamic - C# によるプログラミング入門 | ++C++; // 未確認飛行 C

まずはVisualStudioの、

空のプロジェクト
空のプロジェクト

空のプロジェクトで、

MainClass.csを追加し、
MainClass.csを追加し、

MainClass.csを追加。

varで宣言した場合
varで宣言した場合

varで宣言した変数xは、10を代入した時点でintと推論されるので、"ABC"は代入できない。

dynamicでyを宣言
dynamicでyを宣言

dynamicでyを宣言し、いろんな型の値を入れてみる。
ブレークポイントを置いて観察。

yに100が代入
yに100が代入

yに100が代入。

yに"ABC"が代入
yに"ABC"が代入

yに"ABC"が代入。

yに1.23が代入
yに1.23が代入

yに1.23が代入。
このようにどんな値でも代入できる。
しかし、

出力できない
出力できない

出力できない。
他のクラスがdynamicに対応するためには参照の追加が必要なのかも。

参照設定から参照の追加
参照設定から参照の追加

参照設定から参照の追加。

Microsoft.CSharp.dllを追加
Microsoft.CSharp.dllを追加

Microsoft.CSharp.dllを追加。

今度は通ったっぽい。
今度は通ったっぽい。

今度は通ったっぽい。

最終的にMainClass.csをこうして、

x.GetType() = System.Int32
y.GetType() = System.Int32
y = 100
y.GetType() = System.String
y = ABC
y.GetType() = System.Double
y = 1.23
続行するには何かキーを押してください . . .

代入するたびに型が変わっているのがわかる。
dynamicの詳細についてはいずれ・・・。

Sample/cs/dynamic/dynamic/src/dynamic at master · bg1bgst333/Sample · GitHub