我知道可以使用Nullable值类型来包装值类型并提供存储null的能力.但有一个技术原因是不允许值类型为null或原因只是概念性的?
我环顾四周,但之前似乎没有人问过这个问题,所以在这里.
我正在开发一个具有IEquatable
接口的自定义类,因此我正在创建自己的Equals
方法.这是它的样子:
public bool Equals(QueryFilter qfilter)
{
if (qfilter == null)
{
return false;
}
return ((this.Value.Equals(qfilter.Value)) &&
(this.Name.Equals(qfilter.Name)) &&
(this.Order == qfilter.Order));
}
Run Code Online (Sandbox Code Playgroud)
其中Value,Name和Order是QueryFilter类的字段.值和名称是strings
,但Order是一个int
,我想知道使用==
运算符是否正常,或者我是否应该使用该Int32.Equals
方法,以"匹配"其他字段如何进行比较?我检查了MSDN,但它没有详细说明,只是说它超载了,但我不确定在这种情况下这意味着什么.那==
将是唯一一个在工作的人吗?
总而言之,哪一个更好?Int32.Equals
还是==
?我什么时候应该使用每一个?