Programming/C# (vs Java)

object / var / as / is / 타입?

Lawmin 2012. 11. 19. 19:09

새롭게 배워야하는 C# -> JAVA 와의 차이점에 집중하자..

object 타입의 경우 클래스 계층구조상 최상위에 있다고 한다.

그래서 object a = 1; object b = "str"; object c = 1.2; 이렇게 써도 문제가 없다는데!?


class Ca { }

class Cb : Ca { }

Ca ca = new Cb(); 이런 개념인듯 하다.


Java 랑 다른 object, as, is, 타입? 에 대한 sample code로 설명은 생략한다!


namespace ConsoleApplication1

{

    class Ca { }

    class Cb : Ca { }

    class Program

    {

        static int Main(string[] args)

        {

            object a = 1;

            object b = a as int?; // 기본형은 nullable 로 (? 는 타입뒤에 붙어서 nullable 형태임을 표시)

            Cb cb = new Cb();

            object c = cb as Ca; // as 뒤의 타입과 상관없이 받았다면) 앞의 변수의 타입을 따라간다.

            object d = "난 실행 시점에 타입이 결정된다구!";

            var e = "난 컴파일 시점에 타입이 결정된다구! 지역변수로만 사용가능해.";

            float f = 3.14f; // 얘는 f 가 꼭 붙어야 함! 왜냐하면 literal 3.14는 double 형이거든!

            Console.WriteLine(a.GetType());

            Console.WriteLine(b.GetType());

            Console.WriteLine(c.GetType());

            Console.ReadKey();

            return 1;

        }

    }

}


결과 

System.Int32

System.Int32

ConsoleApplication1.Cb