[英]How can I return a primitive from a method with a generic return type?
在我的代碼中,我有一個通用的“ getProperty”,如下所示:
public T getProperty<T>(int GUID, string property)
{
PropertyComponent prop;
prop = propDict[GUID];
if(property.Equals("visible")) return (T) (Boolean) prop.visible;
if(property.Equals("enabled")) return prop.enabled;
if(property.Equals("position")) return (T) (Object) prop.position;
}
由於prop.position是Vector2,Visual Studio的編譯器對於第三個術語沒有給出任何錯誤。 Prop.visible和prop.enabled是bool,因此當我嘗試以這種方式返回它們時,出現錯誤“無法將類型bool轉換為T”(以及“無法將類型bool隱式轉換為T”)第二)。
在這種情況下退還布爾值的正確方法是什么?
您可以將泛型類型參數約束為類或結構(使用where子句),但是在您的示例中,您將T類型既作為類又作為結構(布爾值類型)。
如果要返回引用類型對象實例以及值類型數據(如bool),則必須將值類型“裝箱”到對象中,因為引用類型對象是引用類型和引用類型之間唯一的分母值類型。 當您將值類型強制轉換為對象時,裝箱會自動發生。 因此,所有返回值都應類型轉換為(T)(object)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.