새롭게 배워야하는 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