[英]Cast Object Base Class in Object Derived Class
我正在運行以下代碼:
public class CfgObject
{
protected object _inst;
public CfgObject(object inst) { _inst = inst; }
}
public class CfgService : CfgObject
{
public object GetObject() { return _inst; }
public CfgService(object inst) : base(inst) {}
}
...
CfgObject obj1 = new CfgObject((object)1);
CfgService service = (CfgService)obj1;
service.GetObject();
...
我總是收到
System.InvalidCastException(無法將類型為“ CfgObject”的對象轉換為類型為“ CfgService”的對象)
正確的做法是什么?
您不能從CfgObject
為CfgService
,而只能從CfgService
為CfgObject
。 鑄造總是從派生類到基類進行。
如果您確實想要CfgService
的實例, CfgService
需要創建CfgService
的實例。 如果創建超類型(基本),則無法將其強制轉換為子類型。 您可以執行以下操作,盡管這毫無意義,因為您最好將obj1
聲明為CfgService
。
CfgObject obj1 = new CfgService((object)1);
CfgService service = (CfgService)obj1;
service.GetObject();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.