给定代码:

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()分配给变量。在我的课上,它不起作用。我想了解我所缺少的。

我认为这很简单。但是我无法用文字来找到答案。

最佳答案

您必须实现implicit operators

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


隐式运算符将允许您在不显式编写Filter<T> filter = (Filter<T>)value;(显式强制转换)的情况下强制转换类型,而仅在Filter<T> filter = value;(隐式强制转换)。

关于c# - C#如何制作行为类似于Nullable <T>的类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15818300/

10-09 06:36
查看更多