当前位置:  开发笔记 > 编程语言 > 正文

为什么resharper提出以下建议?

如何解决《为什么resharper提出以下建议?》经验,为你挑选了2个好方法。

我的代码是......

public static void AssertNotNull(string name, T val) {
    if (val == null)
        throw new ArgumentNullException(String.Format("{0} must not be null", name));
}

Resharper推荐......

public static void AssertNotNull(string name, T val) {
    if (Equals(val, default(T)))
        throw new ArgumentNullException(String.Format("{0} must not be null", name));
}

Beardo.. 13

因为它不知道是否T是值类型或引用类型,所以它使代码适用于两者.



1> Beardo..:

因为它不知道是否T是值类型或引用类型,所以它使代码适用于两者.


在这种情况下,我实际上不同意Resharper,如果这就是它给出错误的原因.想想看,如果T是一个int,并且值IS实际为0并且应该为零,它将抛出异常,而如果检查null,则不会抛出异常.

2> Michael Mead..:

我是Berado的第二个答案,但是会补充一点,你可以通过添加下面的约束来防止这种情况:

public static void AssertNotNull(string name, T val) where T : class

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有