C#_ArraySort 排序

C# 排序

public class BaseData : MonoBehaviour {
    class Player {
        public int id;
        public string name;
        public int age;
        public int score;

        public Player() {
        }

        public override string ToString() {
            return "id:" + id + "|name:" + name + "|age:" + age + "|score:" + score + "\n";
        }
    }

    class PlayerSort : IComparer<Player> { // -1 排在前 1 排在后
        public int Compare(Player x, Player y) {
            if (x.age > y.age) {
                return -1; // 年龄大排在前
            } else if (x.age < y.age) {
                return 1; // 年龄小排在后
            }

            if (x.score > y.score) {
                return -1; // 分数大排在前
            } else if (x.score < y.score) {
                return 1; // 分数小排在后
            }

            return x.id.CompareTo(y.id); // 否则 id 小的排在前
        }
    }

    void Start() {
        List<Player> myNums = new List<Player> {
            new Player() {id = 2, name = "WWH", age = 11, score = 500},
            new Player() {id = 1, name = "WH", age = 31, score = 420},
            new Player() {id = 4, name = "HH", age = 25, score = 214},
            new Player() {id = 3, name = "CC", age = 25, score = 214},
            new Player() {id = 5, name = "HHW", age = 48, score = 311},
        };
        myNums.Sort(new PlayerSort());
        myNums.ForEach(num => Debug.Log(num.ToString() + "\n"));
    }

    void Update() {
    }
}
posted @ 2022-01-17 17:20  匿鱼  阅读(53)  评论(0)    收藏  举报