internal class Program { private static void Main(string[] args) { // 1. dynamic은 중간에 형을 변환할 수 있다. dynamic v = 1; // System.Int32 출력 Console.WriteLine(v.GetType()); v = "abc"; // System.String 출력 Console.WriteLine(v.GetType()); // 2. dynamic은 cast가 필요없다 object o = 10; // 틀린표현 // (에러: Operator '+' cannot be applied to operands of type 'object' and 'int') //o = o + 20; // 맞는 표현: object 타입은 casting이 필요하다 o = (int)o + 20; // dynamic 타입은 casting이 필요없다. dynamic d = 10; d = d + 20; } } // 동일 어셈블리에서 익명타입에 dynamic 사용한 경우 class Class1 { public void Run() { dynamic t = new { Name = "Kim", Age = 25 }; var c = new Class2(); c.Run(t); } } class Class2 { public void Run(dynamic o) { // dynamic 타입의 속성 직접 사용 Console.WriteLine(o.Name); Console.WriteLine(o.Age); } }