스마트한 개발 공부/C#

[C#] object, var, dynamic 비교

스마트한지노 2021. 10. 31. 13:40
728x90
반응형

1. object

 - object는 모든 타입을 받을 수 있는데, 형변환을 해야 한다,

object o = 10;
//o = o +10; 오류가 남
o = (int)o + 10;
Console.WriteLine(o.GetType());  //System.Int32
o = "ABC";
Console.WriteLine(o.GetType()); //System.String

2. var 

- var는 처음 값이 할당되는 순간 타입이 결정이 되고 형 변환은 필요 없다.

var v = 20;
v = v + 30;
//Console.WriteLine(v.GetType()); // System.Int32
//v = "Daum"; 오류발생

3. dynamic

  • dynamic은 컴파일 시에 코드 체크를 하지 않고 건너뛴다
  • dynamic은 중간에 Type을 변경할 수 있다.
  • dynamic은 형 변환이 필요 없다.
    class Dyanamic
        {
            //파라미터 타입으로 var,object는 올 수 없다.
            public void Print(dynamic d)
            {
                Console.WriteLine(d.Name);
                Console.WriteLine(d.Age);
            }
        }
    
        class DynamicSample
        {
            static void Main()
            {
            	dynamic d = 3;
                d = d + 1;
                Console.WriteLine(d.GetType()); // System.Int32
                d = "ABC";
                Console.WriteLine(d.GetType()); // System.String
                //d.TestMethod(); 실행은 되는데 실행을 하고 나면 예외가 발생한다,
                var d1 = new { Name = "Daum", Age = 33 };
                Dyanamic cd = new Dyanamic();
                cd.Print(d1);
            }
        }

 

728x90
반응형