我有一个这样定义的泛型方法:
public void MyMethod<T>(T myArgument)
我要做的第一件事是检查myArgument的值是否为该类型的默认值,就像这样:
if (myArgument == default(T))
但这不能编译,因为我不能保证T会实现==运算符。所以我把代码转换成这样:
if (myArgument.Equals(default(T)))
现在这个编译了,但是如果myArgument为null就会失败,这是我测试的一部分。我可以像这样添加一个显式的空检查:
if (myArgument == null || myArgument.Equals(default(T)))
现在我觉得这是多余的。ReSharper甚至建议我将myArgument == null部分更改为myArgument == default(T),这是我开始的地方。有没有更好的方法来解决这个问题?
我需要支持这两个引用类型和值类型。