我应该使用运算符还是方法比较整数

本文关键字:方法 比较 整数 运算符 我应该 | 更新日期: 2023-09-27 18:02:26

我正在重构由未指定编码人员编写的客户端代码。它是这样的。

int i = ...;
if (i.Equals(123));

非常想把它改成平常的样子,即:

int i = ...;
if (i == 123);

但我很小心,以免造成任何损害。这些呼叫是相等的,不是吗?无论如何,操作符样式不会更慢,但肯定更令人惊讶,可读性更差,对吧?

我应该使用运算符还是方法比较整数

对于值类型使用==运算符,因为Equals通常用于引用类型。因为int是值类型,所以最好使用==操作符。该规则有一个例外,那就是字符串,因为字符串是一种引用类型,但==操作符在。net框架中重载以检查是否相等。

这些调用是等价的,不是吗?

它们是等价的。

什么时候应该使用==,什么时候应该使用Equals?

有些事我也不知道:)

默认情况下,

值类型不为==提供重载。然而,框架提供的大多数值类型都有自己的类型过载。值类型的Equals的默认实现是由ValueType提供,并使用反射进行比较,这使得它比特定类型的慢得多实现通常是这样的。这个实现还调用

另外,我在字符串上使用==来避免null检查。

if(myString == "something")

if(myString != null && myString.Equals("something"))

由于您将变量声明为int,因此它是值类型,建议使用操作符样式。方法样式将应用于对象类型的变量。

可以比较值类型和对象类型