我不是C#的专家,但我知道在比较字符串时我不应该简单地使用==
。在比较整数时是否应该使用类似的.Equals
方法?
例如,我想做类似的事情:
if (someInt == 2) {}
在C#中可以接受吗?
答案 0 :(得分:9)
我不应该在比较字符串时使用==
为什么不呢? (假设另一种文化或其他一些非默认的比较机制适合你。)它对字符串来说是一个非常明智的操作符,就像它用于整数一样。它会告诉您两个值是否相等,正如人们所期望的那样。
这不是唯一的方式来比较两个字符串或整数的相等性,但它肯定是有效的。
答案 1 :(得分:3)
由于int
是值类型,因此不能为null
。
因此你可以使用==
就好了。
但是,如果您有一个MyInteger
类(值类型int
的包装类,它继承自Object
类型),可以是null
对象,其中不包含int
。 See 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 b
和Int32.Equals
的答案都是有效的,我会更频繁地使用==
进行整理,因为这是一种更为普遍接受的做法。
答案 3 :(得分:0)
你绝对可以在C#中使用== for Strings,我们有运算符覆盖。