的比较方法给定两个实现:条件运算符和比较代表
// compares by Key...
private static int CompareByKey(KeyValuePair<int, string> x, KeyValuePair<int, string> y)
{
return x.Key.CompareTo(y.Key);
}
// compares by Value...
private static int CompareByValue(KeyValuePair<int, string> x, KeyValuePair<int, string> y)
{
return x.Value.CompareTo(y.Value);
}
为什么不以下条件运算码块编译:
Comparison<KeyValuePair<int, string>> sortMethod;
sortMethod = isSortByActualValue ? CompareByKey : CompareByValue;
编译错误:“条件表达式类型不能因为“方法组”和“方法组”之间没有隐式转换“
但是,等效代码块使用if-else d OES没有任何问题:
Comparison<KeyValuePair<int, string>> sortMethod;
if (isSortByActualValue)
sortMethod = CompareByKey;
else
sortMethod = CompareByValue;
(都好于上述两个任务)
如此做有条件的经营者,如果我投的比较委托:
Comparison<KeyValuePair<int, string>> sortMethod;
sortMethod = isSortByActualValue ? (Comparison<KeyValuePair<int, string>>) CompareByKey : CompareByValue;
(都好于上面的作业,即使只是在真实的部分施放)
如何定义CompareByAcutalValue和CompareByDisplayValue?您只显示CompareByKey和CompareByValue的定义。 – 2012-02-28 19:30:37
我发布的代码片段是为了清晰起见而编辑的。我没有意识到我只是部分改变了方法的名称。感谢Eric,我已经将CompareByActualValue的所有引用更新为CompareByKey(并将CompareByDisplayValue更新为CompareByValue)。 – Arun 2012-02-28 19:42:23