だから私はプログラミングにかなり慣れていないので、親クラスをチェックしてその型を見つけ、どちらの結果に対しても同じコードブロックを実行するメソッドを作成できるかどうかを確認しようとしています。基本的に、複数の異なる子クラスがある場合に長い if ステートメント、else if ステートメントを回避する方法があるかどうかを確認しようとしています。
たとえば、代わりに
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();
}
次のようにします。
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 を宣言することも、単に行うこともできないことを私は知っています:
var dd;
if(something) var = whatever;
しかし、形を使って何かをする必要があるたびに、if、else if、else if、else if ステートメントを書かなくてもメソッドを再利用できる方法があるかどうか疑問に思っています。