Files

53 lines
1.1 KiB
C#

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