如何将以下方法转换为适用于任何引用类型的泛型方法:
public string CheckNull(string value, string defaultvalue)
{
return (value == null) ? defaultvalue : value;
}
你可以使用类似的东西:
public T CheckNull<T> (T value, T defaultValue)
where T : class
{
return value ?? defaultValue;
}
虽然,直接使用空合并运算符而不是将其包装在方法中通常是有意义的。
编辑
参考您的评论,您正在编写更多代码来执行已经内置到框架中的操作。
public void Foo (Bar bar)
{
var myBaz = bar.Baz ?? new Baz ();
}
这将与我上面的所有额外代码做同样的事情:
public void Foo (Bar bar)
{
var myBaz = CheckNull (bar.Baz, new Baz ());
}
更多的打字没有回报。
寻找Null Coalescing Operator而不是泛型函数。