c# compare自定义比较

avatar
作者
筋斗云
阅读量:0

在C#中,可以使用自定义比较器(Comparer)来比较自定义对象。自定义比较器需要实现IComparer接口或继承Comparer类。以下是使用自定义比较器的示例:

  1. 实现IComparer接口:
using System;  public class CustomComparer : IComparer {     private readonly string _propertyToCompare;      public CustomComparer(string propertyToCompare)     {         _propertyToCompare = propertyToCompare;     }      public int Compare(object x, object y)     {         // 获取x和y的自定义属性值         var valueX = GetPropertyValue(x, _propertyToCompare);         var valueY = GetPropertyValue(y, _propertyToCompare);          // 比较属性值并返回结果         return string.Compare(valueX, valueY, StringComparison.OrdinalIgnoreCase);     }      private static object GetPropertyValue(object obj, string propertyName)     {         var propertyInfo = obj.GetType().GetProperty(propertyName);         return propertyInfo.GetValue(obj, null);     } } 
  1. 使用自定义比较器:
using System; using System.Collections;  public class CustomObject {     public string Name { get; set; }     public int Age { get; set; } }  class Program {     static void Main()     {         // 创建自定义对象列表         var objects = new ArrayList         {             new CustomObject { Name = "Alice", Age = 30 },             new CustomObject { Name = "Bob", Age = 25 },             new CustomObject { Name = "Charlie", Age = 35 }         };          // 使用自定义比较器对对象列表进行排序         objects.Sort(new CustomComparer("Name"));          // 输出排序后的对象列表         foreach (var obj in objects)         {             Console.WriteLine($"Name: {obj.Name}, Age: {obj.Age}");         }     } } 

在这个示例中,我们创建了一个名为CustomComparer的自定义比较器,用于比较CustomObject对象的Name属性。然后,我们使用这个比较器对CustomObject对象列表进行排序。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!