c# – 我应该怎么做“可能比较值类型与’null’”?

而为自定义NUnit约束编写此方法。

    private void AddMatchFailure<TExpected, TActual>(string failureName, TExpected expected, TActual actual)
    {
        _matchFailures.Add(
            String.Format(MatchFailureFormat, failureName,
            (expected == null) ? "null" : expected.ToString(),
            (actual == null) ? "null" : actual.ToString()));
    }

Resharper警告预期和实际可能是ValueType对象。

e.g. TExpected is DateTime
   expected == null;//  but DateTime is a struct.

将ValueType比较为null时的规则是什么?我应该如何编写该方法以解决这个问题,而不是通过添加类约束来限制通用参数?

不要更改代码 – 只是忽略警告。如果type参数是一个不可为null的值类型,比较总是失败,它总是调用ToString()。我不知道它是否实际上是JITted,但我不会感到惊讶…这听起来不像它的性能关键代码无论如何:)

我个人将警告“开”,但在这种特殊情况下忽略它 – 可能有一个评论。

我想我在重新实现LINQ to Objects时遇到过同样的警告。

http://stackoverflow.com/questions/5340817/what-should-i-do-about-possible-compare-of-value-type-with-null

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c# – 我应该怎么做“可能比较值类型与’null’”?