Сортировка коллекций - C#
Формулировка задачи:
Всем привет хотел отсортировать коллекцию но чего то не хватает не магу понят чего именно .
using System;
using System.Collections;
namespace Sortirovka2
{
class Program
{
static void Main(string[] args)
{
string[] students = { "ivanov"
,"petrov"
,"maksimov"
,"ramil"
,"albert"
,"almaz"
,"gudok"
,"idik"
,"vinson"
};
Jornal jorn = new Jornal();
for (byte i = 0; i < students.Length; i++)
jorn[i] = new student((byte)(i + 1), students[i]);
for (byte i = 0; i < students.Length; i++)
Console.WriteLine(jorn[i].Number + " "+jorn[i].Name);
Array.Sort(jorn);//вот тут возникает ошибка Argument 1: cannot convert from 'Sortirovka2.Jornal' to 'System.Array' Sortirovka2
//
)
Console.ReadLine();
}
}
class student :IComparable
{
byte number;
string name;
public byte Number
{
get
{
return number;
}
set
{
if(value>0)
number = value;
}
}
public string Name
{
get
{
return name;
}
set
{
if(value.Length>1 && value.Length<51)
name = value;
}
}
public student (byte n,string na)
{
this.Number = n;
this.Name = na;
}
public int CompareTo(object obj)
{
student s = (student)obj;
byte leng;
if (s.Name.Length > this.Name.Length)
leng = (byte)this.Name.Length;
else leng = (byte)s.Name.Length;
for(byte i=0;i<leng;i++)
{
if (s.Name[i] > this.Name[i])
return 1;
if (s.Name[i] < this.Name[i])
return -1;
if (i==leng-1)
if (s.Name.Length < this.Name.Length)
return 1;
if (s.Name.Length > this.Name.Length)
return -1;
if (s.Name.Length == this.Name.Length)
return 0;
}
return 0;
}
}
class Jornal
{
ArrayList jornal = new ArrayList ();
public student this[byte i]
{
get { return (student)jornal[i]; }
set
{
if (i > -1 && value is student)
jornal.Add(value);
}
}
}
}Решение задачи: «Сортировка коллекций»
textual
Листинг программы
Jornal jorn = new Jornal(); // Добавляем студента под номером 10 jorn[10] = new student(1, "aaaa"); // Пытаемся прочитать имя добавленного студента // но "внезапно" получаем исключение ArgumentOutOfRangeException Console.WriteLine(jorn[10].Name);