首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

请问 关于list.sort()参数的有关问题。分少见谅,回复

2013-11-08 
请教 关于list.sort()参数的问题。分少见谅,在线等回复。script runatServerprivate Liststring rowr

请教 关于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)就可以让大的变成小的,小的变成大的,达到逆序排列的目的。

热点排行