1
我寫Foo<T>(IComparer<T> comp)
方法組是不能分配給的IComparer <DateTime>
我想
Foo<DateTime> (DateTime.compare)
調用它,但我得到這個錯誤:
method group is not assignable to
IComparer<DateTime>
我怎麼能解決這個問題?
TIA
我寫Foo<T>(IComparer<T> comp)
方法組是不能分配給的IComparer <DateTime>
我想
Foo<DateTime> (DateTime.compare)
調用它,但我得到這個錯誤:
method group is not assignable to
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>
方法,我用一個輔助類從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));