jjzjj

c# - 如何使用流利断言比较列表?

我想比较一个对象列表,忽略列表中对象的顺序,只比较对象中的一些属性,目前我正在使用以下代码来执行此比较:actual.Should().NotBeNull();actual.Count.Should().Be(expected.Count);//compareignoringorderforeach(varexpinexpected)actual.Should().Contain(act=>act.IndividualId.Equals(exp.IndividualId)&&act.Email.Equals(exp.Email)&&act.FirstName.Equals(exp.Fi

C# SortedSet<T> 和相等性

我对SortedSet的行为有点疑惑,请看下面的例子:publicclassBlah{publicdoubleValue{get;privateset;}publicBlah(doublevalue){Value=value;}}publicclassBlahComparer:Comparer{publicoverrideintCompare(Blahx,Blahy){returnComparer.Default.Compare(x.Value,y.Value);}}publicstaticvoidmain(){varblahs=newList{newBlah(1),newBlah(2

c# - Equals 和 GetHashCode 方法不一致

读完这个问题Whydo"int"and"sbyte"GetHashCodefunctionsgeneratedifferentvalues?我想进一步挖掘并发现以下行为:sbytei=1;intj=1;object.Equals(i,j)//false(1)object.Equals(j,i)//false(2)i.Equals(j)//false(3)j.Equals(i)//true(4)i==j//true(5)j==i//true(6)i.GetHashCode()==j.GetHashCode()//false(7)(3)和(4)之间的差异打破了Equals应该对称的要求。(

c# - 如何在实体数据模型创建的对象上覆盖 Equals?

我有一个我创建的实体数据模型,它从SQLite数据库中提取记录。其中一个表是People,我想重写person.Equals()方法,但我不确定去哪里进行这样的更改,因为Person对象是自动生成的,我什至看不到autogen代码在哪里居住。我知道如何在手工制作的对象上覆盖Equals,它只是在自动生成的对象上执行此操作的位置。 最佳答案 您需要创建一个分部类。向您的解决方案添加一个新的.cs文件,然后像这样启动它:publicpartialclassPerson{publicoverrideboolEquals(Objectobj

c# - 为什么 long 和 decimal 之间的 Equals 不可交换?

我在linqpad中运行了这段代码:longx=long.MaxValue;decimaly=x;x.Dump();y.Dump();(x==y).Dump();(y==x).Dump();Object.Equals(x,y).Dump();Object.Equals(y,x).Dump();x.Equals(y).Dump();y.Equals(x).Dump();它产生这个输出:92233720368547758079223372036854775807TrueTrueFalseFalseFalseTrue请注意最后两行:x.Equals(y)为假,但y.Equals(x)为真。因

c# - 为同一个匿名方法创建两个委托(delegate)实例不相等

考虑以下示例代码:staticvoidMain(string[]args){boolsame=CreateDelegate(1)==CreateDelegate(1);}privatestaticActionCreateDelegate(intx){returndelegate{intz=x;};}您会想象这两个委托(delegate)实例比较起来是相等的,就像它们在使用良好的旧命名方法方法(newAction(MyMethod))时一样。它们比较起来并不相等,因为.NETFramework为每个委托(delegate)实例提供了一个隐藏的闭包实例。由于这两个委托(delegate)实

C#:CompareTo(String) 和 Equals(String) 有什么区别?

这个问题在这里已经有了答案:DifferencesinstringcomparemethodsinC#(11个答案)关闭7年前。我想知道,在C#中比较字符串时?哪种方法适合使用,为什么?CompareTo()还是Equals()?

c# - 如果我的类不继承任何东西,为什么我能够覆盖 Equals 方法?

我有点困惑下面的代码是如何工作的publicclassDefaultClass{publicoverrideboolEquals(objectobj){returnbase.Equals(obj);}}我的问题是:我没有继承任何类,但我如何仍然能够覆盖Equals方法。这段代码在VS2010中得到了完美的编译。知道这是如何工作的吗? 最佳答案 因为您的DefaultClass“继承”自object默认情况下。您正在覆盖object.Equals现在。不过我理解其中的困惑。MSDN说像这样的类不继承任何其他类,但它继承了(object

c# - String.Equals(string1.Substring(0, x), string2) 比 string1.StartsWith(string2) 好吗?

我使用字符串比较来使用StringComparison.OrdinalIgnoreCase测试URL路径。MSDN给出以下字符串比较建议HERE,但没有阐明为什么:MSDN示例(上页的中间位置):publicstaticboolIsFileURI(stringpath){path.StartsWith("FILE:",StringComparison.OrdinalIgnoreCase);returntrue;}MSDN建议:“但是,前面的示例使用String.StartsWith(String,StringComparison)方法来测试相等性。因为比较的目的是测试相等性而不是对字符

c# - Object == equality 失败,但是 .Equals 成功。这有意义吗?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Differencebetween==operatorandEquals()methodinC#?两种形式的平等,第一种失败,第二种成功。(object)"abc"==(object)"abc"false((object)"abc").Equals((object)"abc")true在下面的引用资料中,我们看到“C#中的相等运算符不是多态的”引用:StringEqualityoperator==inc#顺便说一句:仍然不确定为什么这是个问题。我以为它可能是这样的,但不是因为这个测试成功了。staticvoi