rksoftware

Visual Studio とか C# とかが好きです

C# 2.0 以降の新機能の確認 - C# 4.0 - dynamic 型

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);
}