オブジェクトへの参照を指定できます。
暗黙的にアップコンバージョン
ダウンコンバージョン
アップコンバージョン
アップコンバージョン手段基底クラスからサブクラスへのポインタです。
House house = new House();
Asset asset = house;
House
クラスは、Asset
サブクラス
今回の暗黙的な変換がアップ発生します
Asset
オブジェクトクラスasset
のサブクラスを指しているHouse
オブジェクトhouse
Console.WriteLine(asset == house); // True
2つのオブジェクトが同一のクラスを指しているのでHouse
、それらは等しくなります。
資産のNameプロパティの家へのアクセスは非常に簡単です
中指の住宅ローンがあるので、しかし、住宅ローンはそう簡単ではありません、このプロパティを訪問することはできませんName
が存在しないMortgage
このプロパティを
愁い
ダウンキャストはオブジェクトでそのベースクラスのサブクラスをポイント
House h = new House();
Asset asset = h;
House house = (House)asset;
- 父の類推サブクラスが退行しました
- 必要に応じてサブクラスであってもよい親クラスアップコンバージョン
- しかし、親のニーズサブクラス表示変換への参照ダウンコンバージョン
問題がある可能性がありますので、ダウンコンバージョンは、説明が必要です
Stock stock = new Stock();
Asset asset = stock;
House house = (House)asset;
コンパイル時のエラーますが、資産の種類は、ハウスハウス型にキャストすることはできませんされていません
オペレーターとして
オペレータ試みが下方サブクラス変換における基底クラスにオブジェクトを変換するように、変換エラーが発生した場合、それは割当null
Stock stock = new Stock();
Asset asset = stock;
House house = asset as House;
if (house != null)
{
Console.WriteLine(house.Mortgage);
}
出力は家であることを示す、空でありますnull
これは、オペレーターであります
オペレータが正常にオブジェクトが特定のクラスに由来するか否かを検出する、換言すれば、参照を変換することが可能であるかどうかを検出するために使用されます。
static void Main(string[] args)
{
House mfHouse = new House(){Name = "Nva"};
Asset asset = mfHouse;
if (asset is House)
{
Console.WriteLine(((House)asset).Name);
}
}