C#の - キャストと基準コンバージョン

オブジェクトへの参照を指定できます。

  • 暗黙的にアップコンバージョン

  • ダウンコンバージョン

アップコンバージョン

アップコンバージョン手段基底クラスからサブクラスへのポインタです。

House house = new House();
Asset asset = house;

Houseクラスは、Assetサブクラス

今回の暗黙的な変換がアップ発生します

Assetオブジェクトクラスassetのサブクラスを指しているHouseオブジェクトhouse

Console.WriteLine(asset == house); // True

2つのオブジェクトが同一のクラスを指しているのでHouse、それらは等しくなります。

asset.Name

資産の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);
            }
        }

おすすめ

転載: www.cnblogs.com/mujey/p/12182476.html