簡體   English   中英

C#如何使行為類似於Nullable的類<T>

[英]C# how to make a class that behave like Nullable<T>

給定代碼:

public class Filter<T>
{
    private bool selected = false;
    public bool Selected { get { return selected; } }

    private T value;
    public T Value { get{ return this.value; } set { this.value = value; selected = true; }
}     

public class Test
{
    public void filter()
    {
        DateTime a= new DateTime();
        Nullable<DateTime> b = new DateTime(); //Work Like a Charm
        Filter<DateTime> c = new DateTime(); //Dosent Work
    }
}

Nullable<T> ,可以將new DateTime()直接分配給變量。 在我的課上,它不起作用。 我想了解我所缺少的。

我認為這很簡單。 但是我無法用文字找到答案。

您必須實現隱式運算符

public static implicit operator Filter<T>(T value)
{
    return new Filter<T>() { Value = value };
}

隱式運算符將允許您強制轉換類型,而無需顯式編寫Filter<T> filter = (Filter<T>)value; (顯式強制轉換),而僅是Filter<T> filter = value; (隱式轉換)。

您需要使用隱式轉換運算符:

請參閱: 隱式強制轉換運算符和相等運算符

這使您可以編寫代碼以從另一種類型構造您的自定義類型。

暫無
暫無

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

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