给定代码:
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/