ReSharper的建议:检查引用相等代替 [英] Resharper suggestion: check for reference equality instead

查看:298
本文介绍了ReSharper的建议:检查引用相等代替的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我不明白为什么ReSharper的建议我在此代码为检查引用相等代替:

 如果( typeToTranslate.Equals(typeof运算(字符串)))
{
//做些什么
}

为什么这应该是更好的:

  typeToTranslate == typeof运算(字符串)

------------ ------------编辑



这是方法存根:

 (类型typeToTranslate) 
{
如果(typeToTranslate == NULL)抛出新的ArgumentNullException(typeToTranslate);

//做一些东西

如果(typeToTranslate.Equals(typeof运算(字符串)))
{
//做一些东西
}
//返回一些东西
}


解决方案

的Object.Equals 是一个更一般的实物比参考平等机会:如 X ==是那么 x.Equals(Y),但反过来就不一定如此。然而,在 MSDN库记录的:




A 键入对象,表示一个类型是独一无二的;也就是说,两个键入对象引用指向相同的对象,当且仅当它们代表同一类型。这允许的类型使用引用相等的对象进行比较。




由于ReSharper的分类检查引用相等而不是常见的做法和代码改进下检查选项,我的猜测是,ReSharper的是让你知道,它的足以的使用引用相等来比较类型;你并不需要由等于办法(即使对于类型两者是等价的)所隐含的更普遍的一种平等的。


I don't understand why Resharper suggest me to "check for reference equality instead" in this code:

if ( typeToTranslate.Equals( typeof(string) ) )
{
    //do something
}

Why this should be better:

typeToTranslate == typeof(string)

------------EDIT------------

This is the method stub:

protected IType TranslateType(Type typeToTranslate)
{
    if (typeToTranslate == null) throw new ArgumentNullException("typeToTranslate");

    //do some stuff

    if (typeToTranslate.Equals(typeof(string)))
    {
        //do some stuff
    }
    //return some stuff
 }

解决方案

Object.Equals is a more general kind of equality than reference equality: if x == y then x.Equals(y), but the converse isn't necessarily true. However, as documented in MSDN Library:

A Type object that represents a type is unique; that is, two Type object references refer to the same object if and only if they represent the same type. This allows for comparison of Type objects using reference equality.

Because ReSharper categorizes the "Check for reference equality instead" inspection option under "Common Practices and Code Improvements", my guess is that ReSharper is letting you know that it suffices to use reference equality to compare types; you don't need the more general kind of equality implied by the Equals method (even though for types the two are equivalent).

这篇关于ReSharper的建议:检查引用相等代替的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆