jjzjj

Comparison

全部标签

c# - 如何最有效地测试两个数组是否包含 C# 中的等效项

我有两个数组,我想知道它们是否包含相同的项。Equals(objectobj)不起作用,因为数组是引用类型。我在下面发布了我的尝试,但由于我确定这是一项常见任务,所以我想知道是否有更好的测试。publicboolContainsEquivalentSequence(T[]array1,T[]array2){boola1IsNullOrEmpty=ReferenceEquals(array1,null)||array1.Length==0;boola2IsNullOrEmpty=ReferenceEquals(array2,null)||array2.Length==0;if(a1IsN

c# - 使用 IEqualityComparer<T> 的推荐最佳做法是什么?

我正在寻找真实世界的最佳实践,其他人可能如何实现具有复杂领域的解决方案。 最佳答案 任何时候你考虑使用IEqualityComparer,停下来想想是否可以让这个类实现IEquatable反而。如果Product应始终按ID进行比较,只需将其定义为等同,以便您可以使用默认比较器。也就是说,仍然有一些您可能需要自定义比较器的原因:如果有多种方式可以将一个类的实例视为相等。最好的例子是字符串,框架在StringComparer中为其提供了六个不同的比较器。.如果类的定义方式不能将其定义为IEquatable.这将包括其他人定义的类和编译

c# - 实现地理坐标类 : equality comparison

我正在将CodePlex中的地理坐标类集成到我的个人“工具箱”库中。此类使用float存储纬度和经度的字段。自下课GeoCoordinate工具IEquatable,我习惯性地写了Equals像这样的方法:publicboolEquals(GeoCoordinateother){if(other==null){returnfalse;}returnthis.latitude==other.latitude&&this.longitude==other.longitude;}此时我停下来考虑我正在比较浮点变量是否相等,这通常是一个禁忌。我的思考过程大致如下:我只能想象设置Latitude

c# - 复杂对象上的 GroupBy(例如 List<T>)

使用GroupBy()和Count()>1我试图在列表中查找我的类的重复实例。这个类看起来像这样:publicclassSampleObject{publicstringId;publicIEnumerableEvents;}这就是我实例化和分组列表的方式:publicclassProgram{privatestaticvoidMain(string[]args){varitems=newList(){newSampleObject(){Id="Id",Events=newList(){"ExampleEvent"}},newSampleObject(){Id="Id",Events=

C#比较不同大小写的字符串

这个问题在这里已经有了答案:HowcanIdoacaseinsensitivestringcomparison?(9个回答)关闭9年前。我正在读取一个用户名,然后检查是否存在于另一个数据库表中,问题是虽然用户名相同但大小写可能不同并且阻止它找到匹配示例jsmith和JSmith或JSMITH。我该如何解决这个问题?我应该在写入第一个数据库时降低大小写,还是在比较两者时更改下面的代码?drUser["Enrolled"]=(enrolledUsers.FindIndex(x=>x.Username==(string)drUser["Username"])!=-1);更新:仍在努力解决这个

c# - 除了方法在 linq 中如何工作

我有类(class):classSomeClass{publicstringName{get;set;}publicintSomeInt{get;set;}}classSomeComparison:IEqualityComparer{publicboolEquals(SomeClasss,SomeClassd){returns.Name==d.Name;}publicintGetHashCode(SomeClassa){return(a.Name.GetHashCode()*251);}}我还有两个大的List称为list1和list2以前我有:varq=(fromainlist1fr

c# - 我应该使用 '==' 进行 .NET 本地化字符串比较吗?

在.NET中不使用“==”来比较本地化字符串的原因是什么?如果我确实使用CultureInfo,比较将如何执行? 最佳答案 如果您将文化感知字符串与==进行比较,例如“Strasse”与“Straße”,它会返回false。如果您需要对UI内容进行文化感知比较(Listview的排序),您可以使用String.Compare和相关的CultureInfo。CultureInfoci=newCultureInfo("de-DE");String.Compare("Strasse","Straße",true,ci)//Returnsz

c# - 字符串比较 - strA.ToLower()==strB.ToLower() 或 strA.Equals(strB,StringComparisonType)?

根据标题,您使用什么字符串比较实践,为什么? 最佳答案 您没有指定平台,但我猜是.NET。我强烈建议您使用后一种形式——因为案例比较并不像您预期​​的那么简单。(它也避免了创建额外的字符串,但这是另一回事。)例如,当代码在土耳其运行时出现“mail”和“MAIL”时,您希望您的代码执行什么操作?如果您使用ToLower它将返回false,同样如果您使用CurrentCultureIgnoreCase-但如果您使用InvariantCultureIgnoreCase它将返回true。您需要考虑数据的来源以及您尝试使用它实现的目标。参见

c# - 如何将数字字符串排序为数字?

如果你有这样的字符串:"file_0""file_1""file_2""file_3""file_4""file_5""file_6""file_11"如何对它们进行排序,使“file_11”不在“file_1”之后,而是在“file_6”之后,因为11>6。我是否必须为此解析字符串并将其转换为数字?Win7中的Windows资源管理器按照我想要的方式对文件进行排序。 最佳答案 DoIhavetoparsethestringandconvertitintoanumberforthis?本质上,是的;但LINQ可能会有所帮助:vars

c# - 通过比较它们的序列化字节数组来比较一个类的两个实例是否可靠?

给定一个类的两个实例,通过先将它们序列化然后比较字节数组(或可能的数组哈希)来比较它们是否是一种良好且可靠的做法。这些对象可能具有复杂的层次结构属性,但序列化应根据需要深入。通过比较,我的意思是确保原始类型的所有属性具有相等值、复杂类型的属性具有原始类型的相等属性等的过程。至于集合属性,它们应该彼此相等:相等的元素,相同的位置:{'a','b','c'}!={'a','c','b'}{newCustomer{Id=2,Name="abc"},newCustomer{Id=3,Name="def"}}!={newCustomer{Id=3,Name="def"},newCustomer{