using System.Collections.Generic; namespace GFGGame { public class ListUtil { /// /// 用来做泛型数据切换,上一条,下一条... /// /// /// /// 当前处于的索引 /// 操作数据之后返回的数据的索引,也就是最新的索引 /// /// public static T Navigate(List list, NavigateType type, int currentIndex, out int newIndex) where T : new() { if (type == NavigateType.Previous) { //如果已经是最前面的一条数据,则切换到最后一条数据,形成一个切换循环 if (currentIndex <= 0) { currentIndex = list.Count - 1; newIndex = currentIndex; return list[currentIndex]; } } else if (type == NavigateType.Next) { //如果已经是最后一条数据,则切换到第一条数据,形成一个切换循环 if (currentIndex >= list.Count - 1) { currentIndex = 0; newIndex = currentIndex; return list[currentIndex]; } } else { newIndex = currentIndex; return list[currentIndex]; } int previousIndex = currentIndex - 1; int nextIndex = currentIndex + 1; if (previousIndex < 0 && nextIndex >= list.Count) { newIndex = currentIndex; return list[currentIndex]; } if (type == NavigateType.Previous && previousIndex >= 0) { newIndex = previousIndex; return list[previousIndex]; } if (type == NavigateType.Next && nextIndex < list.Count) { newIndex = nextIndex; return list[nextIndex]; } newIndex = currentIndex; return list[currentIndex]; } /// /// 动作枚举 /// public enum NavigateType { /// /// 不作切换动作,返回当前索引的数据 /// None = 0, /// /// 上一条 /// Previous = 1, /// /// 下一条 /// Next = 2 } } }