method group不能分配给Icomparer
本文关键字:Icomparer DateTime 分配 group 不能 不能分 method | 更新日期: 2023-09-27 18:15:59
我写的是Foo<T>(IComparer<T> comp)
Foo<DateTime> (DateTime.compare)
但是我得到这个错误:
方法组不能分配给
IComparer<DateTime>
我该如何解决这个问题?
TIA
该方法需要一个IComparer<T>
的实例,而不是一个委托。您需要创建一个实现IComparer<DateTime>
的类:
public class DateTimeComparer : IComparer<DateTime>
{
public int Compare(DateTime x, DateTime y)
{
return x.Compare(y);
}
}
或者,您可以更改该方法,使其期望Comparison<DateTime>
:
void Foo<T>(Comparison<T> comparison)
那么你可以直接将DateTime.Compare
作为参数传递。
由于需要IComparer<T>
而不是Comparison<T>
的方法更多,因此我使用helper类从Comparison<T>
生成IComparer<T>
:
public class ComparisonComparer<T> : IComparer<T>
{
private readonly Comparison<T> _comparison;
public ComparisonComparer(Comparison<T> comparison)
{
_comparison = comparison;
}
public int Compare(T x, T y)
{
return _comparison(x, y);
}
}
你可以这样使用:
Foo(new ComparisonComparer(DateTime.Compare));