53 lines
1.1 KiB
C#
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);
|
|
}
|
|
} |