在C#中,基類實例可以轉(zhuǎn)換為派生類實例,但是這只能在派生類實例中包含了基類實例的所有成員和方法的情況下進行。這種轉(zhuǎn)換稱為向上轉(zhuǎn)換或者向下轉(zhuǎn)換。
向上轉(zhuǎn)換:將派生類實例轉(zhuǎn)換為基類實例。這種轉(zhuǎn)換是隱式的,因為派生類包含了基類的所有成員和方法,所以可以將派生類實例賦值給基類實例。
class BaseClass { }
class DerivedClass : BaseClass { }
DerivedClass derivedObj = new DerivedClass();
BaseClass baseObj = derivedObj; // 向上轉(zhuǎn)換
向下轉(zhuǎn)換:將基類實例轉(zhuǎn)換為派生類實例。這種轉(zhuǎn)換是顯式的,因為基類不包含派生類的所有成員和方法,所以需要顯式地將基類實例轉(zhuǎn)換為派生類實例。
BaseClass baseObj = new BaseClass();
DerivedClass derivedObj = baseObj as DerivedClass; // 向下轉(zhuǎn)換
if (derivedObj != null)
{
// 轉(zhuǎn)換成功
}
需要注意的是,在進行向下轉(zhuǎn)換時,需要使用as關(guān)鍵字進行轉(zhuǎn)換,同時需要進行null檢查以確保轉(zhuǎn)換成功。如果轉(zhuǎn)換失敗,as操作符會返回null值。