アップキャスティングとダウンキャスティング:
アップキャスティング:派生クラスから基本クラスへのキャストダウンキャスティング:基本クラスから派生クラスへのキャスト
例と同じことを理解しましょう:
次のように定義されている、2つのクラスShapeを私の親クラスとして、Circleを派生クラスとして考えます。
class Shape
{
public int Width { get; set; }
public int Height { get; set; }
}
class Circle : Shape
{
public int Radius { get; set; }
public bool FillColor { get; set; }
}
アップキャスト:
Shape s = new Shape();
円c = s;
cとsはどちらも同じメモリ位置を参照していますが、どちらも異なるビューを持っています。つまり、「c」参照を使用すると、基本クラスと派生クラスのすべてのプロパティにもアクセスできますが、「s」参照を使用すると、プロパティにアクセスできます。唯一の親クラスの。
アップキャストの実際的な例は、.netフレームワークのすべてのタイプのストリームリーダーの基本クラスであるStreamクラスです。
StreamReaderリーダー= new StreamReader(new FileStreamReader());
ここでは、FileStreamReader()がストレッドレッドにアップキャストされています。
ダウンキャスティング:
形状s = new Circle(); ここで上で説明したように、sのビューは唯一の親です。親と子の両方に対してそれを作成するには、それをダウンキャストする必要があります。
var c =(Circle)s;
ダウンキャスティングの実際的な例は、WPFのボタンクラスです。
Employee emp= mgr;
十分なはずです。