david's daily developer note

C#, 상속 관계가 존재하는 Class들에 대한 is연산중 범할 수 있는 논리 오류.. 본문

[Develop] Language/C#

C#, 상속 관계가 존재하는 Class들에 대한 is연산중 범할 수 있는 논리 오류..

mouse-david 2010. 10. 27. 16:43
728x90
상속 관계가 존재하는 Class들에 대한 is연산중 범할 수 있는 논리 오류..가 있다. 상속관계를 이해하고, Type Check는 알지만,,
바쁜 코더들에게.. 쉽게 간과될 수 있는 논리 오류 일것이다.. 다음의 예제를 보자.

public class parent : Ifamily   
{
}
public class child : parent   
{
}
if (inputObject is parent)
{
// inputObject 가 child type이여도, parent class에서 상속 받았으므로, 첫번째 if문에 들어간다. 
}
else if (inputObject is child)
{
// 다음의 조건문은 들어오지 않으므로, 오류!!
}
if-else 문에서  parent에 먼저 is연산을 수행 할 경우에, child 임에도, is parent 조건 절에서 수행되고, 실제 child의 is 연산은 수행되지 않을 것이다.  그러므로, child와 parent의 경우와 같이 상속관계에 존재하는 class스에 대한 type 체크는  하위 클레스를 우선해야한다.
728x90