그래서 프로그래밍에 익숙하지 않고 부모 클래스의 형식을 확인한 다음 동일한 블록을 실행하는 메서드를 작성할 수 있는지 알아보기 위해 노력하고 있습니다. 결과에 대한 코드의 기본적으로 나는 여러 다른 자식 클래스가있을 때 else if 문에서 long if를 피하는 방법이 있는지 확인하려고합니다.동적 캐스팅 여러 자식 클래스 중 하나의 부모 클래스
예컨대
if (shape.GetType() == typeof(Rectangle)) var someShape = (Rectangle)shape;
else if (shape.GetType() == typeof(Circle)) var someShape = (Circle)shape;
else if (shape.GetType() == typeof(Polygon)) var someShape = (Polygon)shape;
method(someShape)
{
doStuff...
}
당신이 위와 같이 VAR를 선언 할 수 없습니다 것을 알고도 그냥 수행 할 수 있습니다 : 대신
public Class Shape
public Class Circle : Shape
public Class Rectangle : Shape
public Class Polygon : Shape
....
Shape shape;
if(shape.GetType() == typeof(Rectangle))
{
var asRectangle = (Rectangle)shape;
doSomething();
}
else if (shape.GetType() == typeof(Circle))
{
var asCircle = (Circle)shape;
doSameSomething();
}
else if (shape.GetType() == typeof(Polygon))
{
var asPoly = (Polygon)shape;
doSame();
}
의 같은 것을 수행
var dd;
if(something) var = whatever;
을하지만 궁금하네요 어쨌든 if, else if, else if, else if 문을 쓸 필요없이 메소드를 재사용 할 수있을 때마다 나는 모양을 가지고 뭔가를 할 필요가있다.
는'abstract' virtual''로 기본 클래스의 메서드를 선언 또는 당신은'무시로 파생 클래스에서 다시 선언 할 수있다
그럼 당신은 이런 식으로 소모 될 수 있습니다 '키워드.이렇게하면 객체를 'Shape'으로 취급하고 공통 함수를 호출 할 수 있지만 인스턴스가 실제로 어떤 클래스에 해당하는지에 따라 적절한 메소드를 호출하게합니다. –