簡體   English   中英

如何編寫處理可為空值和引用的通用泛型類型?

[英]How to write universal generic type handling nullable values and references?

    public sealed class MyClass<T>
    {
        private T? myField;
    }

這段代碼編譯得很好,但是當我將它與引用類型(如 T=string)一起使用時,我將得到可為空的myField (如預期的那樣)。 但是當我使用值類型(如int )時,我會得到我沒想到的不可為空的myField ,特別是考慮到沒有錯誤。

是否可以編寫持有可空值或引用的通用類型?

T? 引用類型和值類型的含義完全不同。 對於值類型,它實際上只是Nullable<T>的一個語法糖,而對於引用類型,它只是一個可以忽略的提示。 如果你想讓MyClass包裝一個可為 null 的int然后將它與int? 類型: MyClass<int?>

您可以使用where T: struct來約束T - 然后是T? 將真正意味着Nullable<T>並且您最初在使用MyClass<int>時會得到myField等於null ,但您將不再能夠使用例如MyClass<string>

據我所知,您不能混合兩種行為並讓運行時根據通用T類型選擇一種行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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