簡體   English   中英

如何從具有通用返回類型的方法返回原語?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM