Разобрать пример с Array.Sort() - C#
Формулировка задачи:
Здравствуйте! не могу понять как так получается что строка sr1.Sort(ref db_arr); возвращает отсортированный массив db_arr... почему так? sr1 ведь пустой(нулевой) массив... это благодаря
что ли...
foreach (DataBase d in db_object) Console.WriteLine("{0}\t{1}\t{2}",d.id,d.login,d.password);
using System; namespace ConsoleApplication1 { // Используем обобщенный интерфейс IComparable class DataBase : IComparable<object> { public string login, password; public int id; byte sort; // Переменная, принимающая возможные значения типа сортировки // 1 - сортировка по id // 2 - сортировка по логину public DataBase() {} public DataBase(string login, string password, int id) { this.login = login; this.password = password; this.id = id; } // Реализуем интерфейс IComparable<T> public int CompareTo(object other) { // Проверим тип объекта obj DataBase db = other as DataBase; if (db != null) { switch (db.sort) { case 1: { if (this.id > db.id) return 1; if (this.id < db.id) return -1; else return 0; } case 2: { if (String.Compare(this.login, db.login) > 0) return 1; if (String.Compare(this.login, db.login) < 0) return -1; else return 0; } default: throw new FormatException("Такой сортировки не существует"); } } else throw new ArgumentException("Данный параметр не относится к базе данных"); } // Метод, реализующий сортировку public void Sort(ref DataBase[] db_object) { try { Array.Sort(db_object); } catch (Exception ex) { Console.WriteLine(ex.Message); } foreach (DataBase d in db_object) Console.WriteLine("{0}\t{1}\t{2}",d.id,d.login,d.password); } public void NumberSort(byte j, ref DataBase[] arr) { for (int i = 0; i < arr.Length; i++) arr[i].sort = j; } } class Program { static void Main() { DataBase[] db_arr = new DataBase[5]; db_arr[0] = new DataBase("alex85", "sddd", 14); db_arr[1] = new DataBase("dm23", "12345", 2); db_arr[2] = new DataBase("rvklops", "ss", 5); db_arr[3] = new DataBase("Djeff", "sdsdsdf", 86); db_arr[4] = new DataBase("dff","s",15); Console.WriteLine("Исходная таблица: \n-----------------\n\n" + "ID\tLogin\tPassword\n"); foreach (DataBase d in db_arr) Console.WriteLine("{0}\t{1}\t{2}",d.id,d.login,d.password); Console.WriteLine("\nОтсортированная таблица БД по id-пользователя: " + "\n----------------------------------------------\n" + "ID\tLogin\tPassword\n"); DataBase sr1 = new DataBase(); sr1.NumberSort(1, ref db_arr); sr1.Sort(ref db_arr); Console.WriteLine("\nОтсортированная таблица БД по логину пользователя: " + "\n----------------------------------------------\n" + "ID\tLogin\tPassword\n"); sr1.NumberSort(2, ref db_arr); sr1.Sort(ref db_arr); Console.ReadLine(); } } }
Решение задачи: «Разобрать пример с Array.Sort()»
textual
Листинг программы
sr1.Sort(ref db_arr);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д