在C#中,可以使用自定義比較器(Comparer)來比較自定義對象。自定義比較器需要實現IComparer接口或繼承Comparer類。以下是使用自定義比較器的示例:
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);
}
}
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
對象列表進行排序。