一个很菜的问题希望好心人能解答!
C# 入门经典(第三版) 第12章 泛型
全文在下面的链接中
http://book.csdn.net/bookfiles/30/10030856.shtml
当中的例子 CH12Ex03
.
.
.
(7) 添加一个新类VectorDelegates。
(8) 修改VectorDelegates.cs中的代码,如下所示:
public static class VectorDelegates
{
public static int Compare(Vector x, Vector y)
{
if (x.R > y.R)
{
return 1;
}
else if (x.R < y.R)
{
return -1;
}
return 0;
}
public static bool TopRightQuadrant(Vector target)
{
if (target.Theta >= 0.0 && target.Theta <= 90.0)
{
return true;
}
else
{
return false;
}
}
}
(9) 修改Program.cs中的代码,如下所示:
static void Main(string[] args)
{
Vectors route = new Vectors();
route.Add(new Vector(2.0, 90.0));
route.Add(new Vector(1.0, 180.0));
route.Add(new Vector(0.5, 45.0));
route.Add(new Vector(2.5, 315.0));
Console.WriteLine(route.Sum());
Comparison <Vector> sorter = new Comparison <Vector>(VectorDelegates.Compare);
route.Sort(sorter);
Console.WriteLine(route.Sum());
Predicate <Vector> searcher =
new Predicate <Vector>(VectorDelegates.TopRightQuadrant);
Vectors topRightQuadrantRoute = new Vectors(route.FindAll(searcher));
Console.WriteLine(topRightQuadrantRoute.Sum());
Console.ReadKey();
}
.
.
.
红色字体的部分,不明白!
Comparison 泛型委托
Comparison <Vector> sorter = new Comparison <Vector>(VectorDelegates.Compare);
表示比较同一类型的两个对象的方法。 返回值 0, <0 ,>0
那实例化的sorter是什么呢?
当中的参数VectorDelegates.Compare........真的不理解!
太多的疑问了,请好心人帮忙答疑解惑!
------解决方案--------------------首先没看到红色字体
Comparison <Vector> sorter = new Comparison <Vector>(VectorDelegates.Compare);
这个不是一个构造吗?
------解决方案--------------------泛型 很好用 功能很强大 不过我也在学习中
帮你UP下!
------解决方案--------------------Comparison是委托对吧,所以正常情况下使用委托就是
Comparison <Vector> sorter = new Comparison <Vector>(VectorDelegates.Compare);
根据一个函数生成这个委托,你也可以这么写
route.Sort(VectorDelegates.Compare);
还可以这么写
route.Sort(delegate(Vector x, Vector y)
{
if (x.R > y.R)
{
return 1;
}
else if (x.R < y.R)
{
return -1;
}
return 0;
});
------解决方案--------------------Comparison<T> 泛型委托表示比较同一类型的两个对象的方法。
此委托由 Array 类的 Sort<(Of <(T>)>)(array<T>[]()[], Comparison<(Of <(T>)>)) 方法重载和 List<(Of <(T>)>) 类的 Sort(Comparison<(Of <(T>)>)) 方法重载使用,用于对数组或列表中的元素进行排序。
------解决方案--------------------List的Sort()方法其中一个重载是接受泛型委托作为参数
CompareDinosByLength是一个方法,作为参数传到List的Sort()中
------解决方案--------------------