C# List 实现 IComparer 接口 排序

C# 的 List<> 容器提供了 IComparer 接口 来让使用者可以灵活的对 容器进行排序。

下面通过对一个背包 List<> 进行以下规则排序:

1、首先按道具类型排序

2、类型相同然后按道具品级排序

3、品级相同然后按等级排序

转自 http://www.thisisgame.com.cn

using System;using System.Collections.Generic;using System.Text;namespace bagtest{public class ItemInfo{public int mItemType; //1道具 2礼包;public int mItemLevel;//等级;public int mitemRank;//品级;public ItemInfo(int itemtype, int itemlevel, int itemrank){mItemType = itemtype;mItemLevel = itemlevel;mitemRank = itemrank;}public bool isSame(ItemInfo iteminfo){if ((mItemType == iteminfo.mItemType) && (mitemRank == iteminfo.mitemRank) && (mItemLevel == iteminfo.mItemLevel)){return true;}return false;}}public class ItemInfoCompare : IComparer<ItemInfo>{public int Compare(ItemInfo infoA, ItemInfo infoB){if (infoA.isSame(infoB)){return 0;}//首先比较类型;if (infoA.mItemType > infoB.mItemType){return 1;}else if (infoA.mItemType < infoB.mItemType){return -1;}//类型相同,,比较品级;if (infoA.mitemRank > infoB.mitemRank){return 1;}else if (infoA.mitemRank < infoB.mitemRank){return -1;}//品级相同,比较等级;if (infoA.mItemLevel > infoB.mItemLevel){return 1;}else if (infoA.mItemLevel < infoB.mItemLevel){return -1;}return 0;}}class Program{static void Main(string[] args){List<ItemInfo> itemInfoList = new List<ItemInfo>();itemInfoList.Add(new ItemInfo(1, 2, 2));//道具 2级 品级3itemInfoList.Add(new ItemInfo(2, 3, 2));//礼包 2级 品级1itemInfoList.Add(new ItemInfo(1, 3, 2));//道具 2级 品级2itemInfoList.Add(new ItemInfo(1, 2, 1));//道具 2级 品级1itemInfoList.Add(new ItemInfo(1, 2, 3));//道具 2级 品级3itemInfoList.Add(new ItemInfo(2, 2, 1));//礼包 2级 品级1itemInfoList.Add(new ItemInfo(1, 1, 1));//道具 1级 品级1itemInfoList.Add(new ItemInfo(2, 1, 3));//礼包 1级 品级3//输出a中全部元素Console.WriteLine("排序前");foreach (var v in itemInfoList){Console.WriteLine("v.mItemType=" + v.mItemType + " v.mitemRank=" + v.mitemRank + " v.mItemLevel=" + v.mItemLevel);}SortItem(itemInfoList);//输出a中全部元素Console.WriteLine("排序后");foreach (var v in itemInfoList){Console.WriteLine("v.mItemType=" + v.mItemType + " v.mitemRank=" + v.mitemRank + " v.mItemLevel=" + v.mItemLevel);}Console.ReadLine();}static void SortItem(List<ItemInfo> itemInfoList){itemInfoList.Sort(new ItemInfoCompare());}}}转自 http://www.thisisgame.com.cn

背着背包的路上,看过许多人,听过许多故事,

C# List 实现 IComparer 接口 排序

相关文章:

你感兴趣的文章:

标签云: