c# 实现IComparable接口,使用sort对自定义类排序
·
自定义类实现IComparable接口时,需要实现CompareTo方法,此方法返回一个int值。
默认情况下,CompareTo是基于升序,与此对应的sort也是升序,即当前值大于传入值,返回正;小于返回负;如果想要通过sort实现逆序,那么修改CompareTo的返回值即可,即当前值大于传入值,返回负。
正序代码示例:
自定义类
using UnityEngine;
using System.Collections;
using System;
//这是将存储在不同集合中的类。为了使用集合的 Sort() 方法,此类需要实现 IComparable 接口。
public class BadGuy : IComparable<BadGuy>
{
public string name;
public int power;
public BadGuy(string newName, int newPower)
{
name = newName;
power = newPower;
}
//IComparable 接口需要此方法。
public int CompareTo(BadGuy other)
{
//如果other为空,那么返回正值
if(other == null)
{
return 1;
}
//返回力量差异。
return power - other.power;
}
}
其他类
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class SomeClass : MonoBehaviour
{
void Start ()
{
//创建BadGay类型的列表
List<BadGuy> badguys = new List<BadGuy>();
//将 3 个 BadGuy 添加到列表
badguys.Add( new BadGuy("Harvey", 50));
badguys.Add( new BadGuy("Magneto", 100));
badguys.Add( new BadGuy("Pip", 5));
//根据power升序排序
badguys.Sort();
foreach(BadGuy guy in badguys)
{
print (guy.name + " " + guy.power);
}
}
}
更多推荐



所有评论(0)