Разобрать пример с 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);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.167 из 5