Tag: equals operator

‘==’vs string.equals c#.net

可能重复: C#:String.Equals vs. == 大家好。 有段时间有人告诉我你不应该将字符串与==进行比较,并且你应该使用string.equals(),但它指的是java。 ¿.NET c#中的差异beteen ==和string.equals是什么?

比较类型的VALUE和REFERENCE

我知道有很多方法可以比较C#中的VALUE和REFERENCES,但是当你尝试比较VALUE或REFERENCE时,我仍然对什么类型执行什么感到困惑。 字符串示例: string str = “hello”; string str2 = “hello”; if (str == str2) { Console.WriteLine(“Something”); } // Is this a comparison of value? if (str.Equals(str2)) { Console.WriteLine(“Something”); } // Is this a comparison of value? string.ReferenceEquals(str, str2); // Comparison of reference (True) Console.WriteLine((object)str1 == (object)str2); // Comparison of reference (True)

字典C中的GetHashCode和Equals实现#

我来到这个网站,在Dictionary中搜索对象比较,我开始知道重写GetHashCode和Equals是在C#中进行对象比较的必要条件。 这是我尝试使用FOREACH迭代方法解决的一段代码。 但是由于性能问题,我的Boss说不使用任何迭代(可能使用containskey或containsvalue方法)也是如此。 任何帮助都非常欢迎.. public class employee { public string empname { get; set; } public string location { get; set; } public double kinid { get; set; } public double managerKin { get; set; } public override bool Equals(object obj) { return base.Equals(obj); } public override int GetHashCode() { return base.GetHashCode(); } } public […]

我应该重载==运营商吗?

==运算符如何在C#中真正起作用? 如果它用于比较A类的对象,它会尝试匹配所有A的属性,还是会寻找指向同一内存位置的指针(或者其他东西)? 让我们创建一个假设的例子。 我正在编写一个使用Twitter API的应用程序,它有一个Tweet类,它具有单个推文的所有属性:文本,发送者,日期和时间,源等。如果我想比较类Tweet的对象是否等价,我可以使用: Tweet a, b; if (a == b) { //do something… } 那会检查 a和b之间Tweet类的所有属性的等价吗? 如果没有, 那么正确的方法是重载==运算符以明确检查所有字段的等价性吗? 更新:从前两个答案,我是正确的假设: 如果没有为类重载==运算符或Equals方法,则使用对象类的==运算符。 对象类的==运算符检查内存位置是否相等。 我必须重载==运算符或Equals方法来完成此任务。 在重载中,我必须手动检查属性的等价性,所以没有办法半自动地,例如,在循环中 ,对吧? 更新#2: Yuriy发表评论说,可以使用reflection检查==运算符中属性的等价性。 如何才能做到这一点? 你能给我一些示例代码吗? 谢谢!

带有Nullable 的’==’的参数顺序

以下两个C#函数的区别仅在于将参数的左/右顺序交换为equals运算符== 。 ( IsInitialized的类型是bool )。 使用C#7.1和.NET 4.7 。 static void A(ISupportInitialize x) { if ((x as ISupportInitializeNotification)?.IsInitialized == true) throw null; } static void B(ISupportInitialize x) { if (true == (x as ISupportInitializeNotification)?.IsInitialized) throw null; } 但是第二个的IL代码似乎要复杂得多。 例如, B是: 36个字节(IL代码); 调用其他function,包括newobj和initobj ; 声明四个本地人而不是一个。 IL用于function’A’…… [0] bool flag nop ldarg.0 isinst [System]ISupportInitializeNotification dup brtrue.s L_000e pop […]

C#隐式转换和==运算符

上下文的一些代码: class a { } class b { public aa{get;set;} public static implicit operator a(bb) { return ba; } } aa=null; bb=null; a = b; //compiler: cannot apply operator ‘==’ to operands of type tralala… bool c = a == b; 是否可以在不同的类型实例上使用==运算符,其中一个可以隐式转换为另一个? 我错过了什么? 编辑: 如果类型必须是相同的调用==,那么为什么 int a=1; double b=1; bool c=a==b; 作品?

定义operator ==但不定义Equals()或GetHashCode()有什么问题?

对于下面的代码 public struct Person { public int ID; public static bool operator ==(Person a, Person b) { return a.Equals(b); } public static bool operator !=(Person a, Person b) { return !a.Equals(b); } } 为什么编译器会给我这些警告? 没有定义下面的方法有什么问题? warning CS0660: ‘Person’ defines operator == or operator != but does not override Object.Equals(object o) warning CS0661: ‘Person’ defines operator […]

C#中==运算符和Equals()方法的区别?

==和Equals()之间的区别是什么? 我知道==用于比较运算符和Equals()方法用于比较string的内容。所以我试过 // first example string s1 = “a”; string s2 = “a”; Console.Write(a.Equals(s2)); // returns true, but if I assign “b” to s2, // then result will be false // second example string s1 =”a”; string s2 =”a”; Console.Write(s1 == s2); // returns true 怎么会这样? 两者都是不同的对象引用。 假设我们认为这些是参考。 但我试着这样使用 string s1 = new string(“ab”); string […]