dynamicキーワードで匿名クラスは本領を発揮する!? - C# 4.0の新機能

ここC# 4.0からdynamicというキーワードが追加されて動的型付けのオブジェクトが使えるようになったと書いたけど、てっきりC# 3.0のvarと同じでローカルスコープでしか使えないと思っていたらそうじゃないのね。

なので、こういうことができるようになるんですね!!

class Person {
    public FirstName {
        get;
        set;
    }
    public LastName {
        get;
        set;
    }
}

class Program {
    static void Main() {
        var obj1 = new Person {
            FirstName = "イングヴェイ",
            LastName = "マルムスティーン";
        };
        // Extream再結成だってね!
        var obj2 = new {
            FirstName = "ヌーノ",
            LastName = "ベッテンコート"
        };
        // 両方大丈夫
        PrintPerson(obj1);
        PrintPerson(obj2);
    }
    
    static void PrintPerson(dynamic obj) {
        Console.WriteLine("FirstName = {0}, LastName = {1}", obj.FirstName, obj.LastName);
    }
}

今まで普通のクラスと匿名クラスで同じプロパティを持っていても、型制約があるため何かしらのメソッドの引数として同じように扱うには無理があったけど、これからは気兼ねなくできるわけですね。

匿名クラスがアップを始めたようですw