C#如何创建一个类似于Nullable <T>的类

Hig*_*ian 1 c# class type-conversion conversion-operator implicit-conversion

鉴于代码:

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
    }
}
Run Code Online (Sandbox Code Playgroud)

Nullable<T>new DateTime()可直接分配到变量.在我的班上,它不起作用.我想了解我所缺少的东西.

我觉得这很简单.但我无法用言语来找到答案.

pas*_*ein 8

你必须实现隐式运算符:

public static implicit operator Filter<T>(T value)
{
    return new Filter<T>() { Value = value };
}
Run Code Online (Sandbox Code Playgroud)

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