그래서 우리는 다음과 같이 씁니다.
Customer c = new Customer();
디자인이 우리가 쓰는 것과 다른 이유는 무엇입니까?
c = new Customer();
c.CreditLimit = 1000;
컴파일러는 고객에게 c 포인트를 계산하고 고객 멤버가 c에서 호출되도록 할 수 있습니까?
나는 우리가 쓰고 싶을 수도 있다는 것을 안다.
IPerson c = new Customer();
IPerson e = new Employee();
쓸 수 있도록 :
public string GetName(IPerson object)
{
return object.Name
}
string name = GetName(c); // or GetName(e);
그러나 우리가 쓴다면 :
c = new Customer();
e = new Employee();
우리는 여전히 쓸 수 있습니다 :
public string GetName(object)
{
return object.Name
}
string name = GetName(c); // or GetName(e);
객체 c 참조의 유형이 Name 속성을 지원하지 않는 경우 (메서드 내의 인수 / 매개 변수에 어떤 멤버가 사용되는지 확인할 수있는 경우) 컴파일러가 바로 위에있는 코드에 대해 불평하거나 런타임이 불평 할 수 있습니다.
C #의 동적 키워드를 사용하더라도 여전히 변수 'type'(런타임에 결정됨)을 사용하고 있습니다. 그러나 왜 변수에 타입이 필요한가? 나는 타당한 이유가 있어야한다고 생각하지만 그것을 생각할 수는 없습니다!
var
C #에서 사용할 수 있으며 변수를 선언하려는 위치가 항상 좋을 수 있습니다.