C# 2.0 以降の新機能を一つづつ確認していきます。
以前に一度行ったのですが、公式ドキュメント再編でリンク切れしているところを見つけてしまったので。今ならもっと簡潔なサンプルが欠けるところもあるだろうし、せっかくなので今もう一度確認して行きます。
dynamic 型
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/builtin-types/reference-types#the-dynamic-type
dynamic 型はコンパイル時の型チェックを行わず、実行時に解決される。
try { // 中身は int dynamic a = 1; Console.WriteLine(a); // 1 Console.WriteLine(a.GetType().Name); // Int32 // int なので足し算ができる a = a + 1; Console.WriteLine(a); // 2 // 文字列を入れることもできる 足し算も文字列の足し算になる a = "text"; a = a + 1; Console.WriteLine(a); // text1 Console.WriteLine(a.GetType().Name); // String Console.WriteLine(a.ToString()); // text1 // 実際にはないメソッドも書けるが実行時エラー Console.WriteLine(a.ToString2()); // <- 実行時エラー「'string' に 'ToString2' の定義がありません」 } catch (Exception ex) { Console.WriteLine(ex.Message); }