比较整数的正确方法

时间:2015-05-06 20:19:12

标签: c#

我不是C#的专家,但我知道在比较字符串时我不应该简单地使用==。在比较整数时是否应该使用类似的.Equals方法?

例如,我想做类似的事情:

if (someInt == 2) {}

在C#中可以接受吗?

4 个答案:

答案 0 :(得分:9)

  

我不应该在比较字符串时使用==

为什么不呢? (假设另一种文化或其他一些非默认的比较机制适合你。)它对字符串来说是一个非常明智的操作符,就像它用于整数一样。它会告诉您两个值是否相等,正如人们所期望的那样。

这不是唯一的方式来比较两个字符串或整数的相等性,但它肯定是有效的。

答案 1 :(得分:3)

由于int是值类型,因此不能为null

因此你可以使用==就好了。

但是,如果您有一个MyInteger类(值类型int的包装类,它继承自Object类型),可以是null对象,其中不包含intSee this MSDN regarding Boxing and Unboxing, where an int is boxed and assigned to an object

回到这个问题,你可以使用==对int类型很好,这里有一些其他选择:

<强>一个。 CompareTo方法

例如:5.CompareTo(6) //returns -1   如果第一个int较小,0将返回-1,如果第一个int较大,则返回1。此方法类似于< > ==运算符。

<强>湾Int32.Equals方法    这与==相同,因为它返回true / false布尔值。 See an example from MSDN here。然而这个方法与盒装int 的== 相比有所不同,正如Jon {{}}中详述的Jon Skeet,这与拳击和取消装箱我提到了

答案 2 :(得分:1)

我想我可以在这里澄清一点混乱。在String中使用.Equals over ==的选择实际上来自Java。在Java中,String被包装并被视为对象,这可能会导致一些问题,包括空指针异常。但是,这并不会出现在c#中,因为String是基本类型,String.Equals(a, b)定义为a == b。 String.Equals允许您添加比较类型,从而为您提供一些选项。这对String.Equals来说是一个小优势,但绝不应该总是使用一个而不是另一个。但是,我觉得有必要注意String.Equals应该在Java中使用,因为这两种语言非常相似,可能会被初学者搞糊涂。 话虽如此,上述关于int a == int bInt32.Equals的答案都是有效的,我会更频繁地使用==进行整理,因为这是一种更为普遍接受的做法。

答案 3 :(得分:0)

你绝对可以在C#中使用== for Strings,我们有运算符覆盖。