c#中,这里的list.sort()排序,结果是按照年龄排的,是因为上边list.add添加的是p

c#中,这里的list.sort()排序,结果是按照年龄排的,是因为上边list.add添加的是person类吗,所以就按照默认的person类排了,他里边说的是年龄的问... c#中,这里的list.sort()排序,结果是按照年龄排的,是因为上边list.add添加的是person类吗,所以就按照默认的person类排了,他里边说的是年龄的问题 展开
 我来答
热心的东泉路网友
2015-02-27 · TA获得超过196个赞
知道小有建树答主
回答量:88
采纳率:0%
帮助的人:50.4万
展开全部

不太明白你想问的问题什么意思,给你看下别人总结的sort3种重载的举例,希望对你有帮助。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ListSort
{
    class Program
    {
        static void Main(string[] args)
        {
            List<C> L = new List<C>();
            L.Add(new C { n = 1, s = "b" });
            L.Add(new C { n = 3, s = "a" });
            L.Add(new C { n = 2, s = "c" });
 
            // 方法1 使用Comparison<T>委托。下面代码使用的是lamda表达是。也可以使用匿名委托之类的,效果是一样的。
            L.Sort((left, right) =>
            {
                if (left.n > right.n)
                    return 1;
                else if (left.n == right.n)
                    return 0;
                else
                    return -1;
            });
 
            // 方法2 使用IComparer<T>接口。
            L.Sort(new CComparer());
 
            // 方法3 除以上两种方法以外还可以使用另一种方法,在C类中实现IComparable<T>
            L.Sort();
 
            L.ForEach((c) =>
            {
                Console.WriteLine(c.n);
            });            
 
            Console.Read();
        }
    }
 
    public class C : IComparable<C>
    {
        public int n;
        public string s;
 
        public int CompareTo(C other)
        {
            if (this.n > other.n)
                return 1;
            else if (this.n == other.n)
                return 0;
            else
                return -1;
        }
    }
 
    public class CComparer : IComparer<C>
    {
        public int Compare(C left, C right)
        {
            if (left.n > right.n)
                return 1;
            else if (left.n == right.n)
                return 0;
            else
                return -1;
        }
    }
}
仙戈雅3n
2015-02-27 · TA获得超过5790个赞
知道大有可为答主
回答量:2398
采纳率:75%
帮助的人:904万
展开全部

建议实现IComparer接口来进行对对象进行排序,

代码如下:

 public class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public Person(string name, int age)
        {
            this.Name = name;
            this.Age = age;
        }
    }

    public class MySort : IComparer {

        int IComparer.Compare(Object x, Object y)
        {
            return (x as Person).Age.CompareTo((y as Person).Age); // 按年龄排序
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            ArrayList list = new ArrayList();
            list.Add(new Person("Jim", 30));
            list.Add(new Person("Bob", 25));

            list.Sort(new MySort());

            for (int i = 0; i < list.Count; i++)
            {
                Console.WriteLine("{0} ({1})", (list[i] as Person).Name, (list[i] as Person).Age);
            }
        }
    }
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
拱怀雁r9
2015-02-27
知道答主
回答量:26
采纳率:0%
帮助的人:3.2万
展开全部
网络
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式