请教 关于list.sort()参数的问题。分少见谅,在线等回复。
<script runat="Server">
private List<string> rowrow = new List<string>();
void Page_Load(object sender, EventArgs e)
{
rowrow.Add("minke");
rowrow.Add("heke");
rowrow.Add("wangdong");
rowrow.Add("dami");
rowrow.Add("xixi");
}
protected void sort_command(object sender,CommandEventArgs e)
{
if (e.CommandName=="sort")
{
switch(e.CommandArgument.ToString())
{
case "ASC":
rowrow.Sort(SortASC);
break;
case "DESC":
rowrow.Sort(SortDESC);
break;
}
}
}
void Page_PreRender(object sender, EventArgs e)
{
bulletedlist1.DataSource = rowrow;
bulletedlist1.DataBind();
}
int SortASC(string x, string y)
{
return string.Compare(x, y);
}
int SortDESC(string x,string y)
{
return string.Compare(x, y) * -1;
}
</script>
不理解的地方是 rowrow.Sort(SortASC);这个方法的参数类型是SortASC我不理解,SortASC是我定义的一个函数。 rowrow.Sort(SortASC)怎么调用我定义的函数?
第二个问题是int SortASC(string x, string y)这里的x,y 是那里来的?
第三个问题是return string.Compare(x, y) * -1; *-1给说一下什么意思.
[解决办法]
这是一个委托,Sort方法内部会比较。x, y是委托传进来的参数。
我们约定Compare比较,返回值>0表示第一个大,<0表示第二个大,=0表示一样大,那么* (-1)就可以让大的变成小的,小的变成大的,达到逆序排列的目的。