public static void Sort(int [][] arrForSort, ICustomCompare compareType) { #region Exceptions if (compareType == null) { throw new NullReferenceException("Неверно задан тип сортировки"); } if (arrForSort == null) { throw new NullReferenceException("Сортируемый массив не инициализирован"); } foreach (int[] a in arrForSort) { if (a == null) { throw new NullReferenceException("Одна или более строк массива ссылается на null");; } } #endregion for (int i = 0; i < arrForSort.Length - 1; i++) { for (int j = 0; j < arrForSort.Length - 1; j++) { if (0 < compareType.CustomCompare(arrForSort[j], arrForSort[j + 1])) { int[] temp = arrForSort[j]; arrForSort[j] = arrForSort[j + 1]; arrForSort[j + 1] = temp; } } } }
static void Main(string[] args) { // 创建两个Person对象 Person p1 = new Person(); p1.Age = 18; Person p2 = new Person(); p2.Age = 19; // 调用接口中方法把p1与p2比较 ICustomCompare iCustomCompare = (ICustomCompare)p1; if (iCustomCompare.CompareTo(p2) > 0) { Console.WriteLine("p1比p2大"); } else if (iCustomCompare.CompareTo(p2) < 0) { Console.WriteLine("p1比p2小"); } else { Console.WriteLine("p1和p2一样大"); } Console.Read(); }
public static void Sort(int [][] arrForSort, ICustomCompare compareType) { #region Exceptions if (compareType == null) { throw new NullReferenceException("Неверно задан тип сортировки"); } if (arrForSort == null) { throw new NullReferenceException("Сортируемый массив не инициализирован"); } foreach (int[] a in arrForSort) if (a == null) { throw new NullReferenceException("Одна или более строк массива ссылается на null"); ; } #endregion for (int i=0;i<arrForSort.Length-1;i++) for (int j = 0; j < arrForSort.Length - 1; j++) if (0<compareType.CustomCompare(arrForSort[j],arrForSort[j+1])) { int[] temp = arrForSort[j]; arrForSort[j] = arrForSort[j + 1]; arrForSort[j + 1] = temp; } }
public static void Sort(int [][] arrForSort, object compareType) { ICustomCompare comType = compareType as ICustomCompare; if (comType == null) { throw new NullReferenceException("Неверно задан тип сортировки"); } Sort(arrForSort, comType); }