Здравствуйте!!!
Значит была у нас в универе тема "Делегаты как свойства" ... ну вот попытался данный материал дома реализовать. Сделал вроде все как нам давали:
| Код | namespace Delegati_kak_svoystva_klasswork_ { class Program { static void Main(string[] args) { Persons persons = new Persons(); persons.LoadPersons(); Console.WriteLine(" Сортировка по имени: "); persons.SimpleSortPerson(Person.SortByName); persons.PrintPersons(); Console.WriteLine(" Сортировка по возрасту: "); persons.SimpleSortPerson(Person.SortByAge); persons.PrintPersons(); Console.WriteLine(" Сортировка по зарплате и имени: "); persons.SimpleSortPerson(Person.SortByOkladName); persons.PrintPersons(); } } public class Person { public string name; public int age; public float oklad; public Person() { } public Person(string a, int b, float c) { name = a; age = b; oklad = c; } public Person(Person p) { name = p.name; age = p.age; oklad = p.oklad; } private static int CompareName(Person obj1, Person obj2) { return (string.Compare(obj1.name, obj2.name)); } private static int CompareAge(Person obj1, Person obj2) { if (obj1.age > obj2.age) return (1); else if (obj1.age < obj2.age) return (-1); else return (0); } private static int CompareOkladName(Person obj1, Person obj2) { if (obj1.oklad > obj2.oklad) return (1); else if (obj1.oklad < obj2.oklad) return (-1); else if (obj1.oklad == obj2.oklad) return (CompareName(obj1, obj2)); } public static Persons.CompareItems SortByName { get { return (new Persons.CompareItems(CompareName)); } } public static Persons.CompareItems SortByAge { get { return (new Persons.CompareItems(CompareAge)); } } public static Persons.CompareItems SortByOkladName { get { return (new Persons.CompareItems(CompareOkladName)); } } }
class Persons { //контейнер объектов Person //делегат public delegate int CompareItems(Person obj1, Person obj2); private int freeItem = 0; const int n = 100; private Person[] persons = new Person[n]; //индексатор public Person this[int num] { get { return (persons[num - 1]); } set { persons[num - 1] = value; } }
public void AddPerson(Person pers) { if (freeItem < n) { Person p = new Person(pers); persons[freeItem++] = p; } else Console.WriteLine("Не могу добавить Person"); } //загрузка public void LoadPersons() { AddPerson(new Person("Соколов", 123, 750.0)); AddPerson(new Person("Синицын", 128, 850.0)); AddPerson(new Person("Воробьев", 223, 750.0)); AddPerson(new Person("Орлов", 129, 800.0)); AddPerson(new Person("Соколов", 133, 1750.0)); AddPerson(new Person("Орлов", 119, 750.0)); } //вывод на экран public void PrintPersons() { for (int i = 0; i < freeItem; i++) { Console.WriteLine("{0,10} {1,5} {2,5}", persons[i].Name, persons[i].age, persons[i].oklad); } }
//сортировка public void SimpleSortPerson(CompareItems compare) { Person temp = new Person(); for (int i = 1; i < freeItem; i++) for (int j = freeItem - 1; j >= i; j--) if (compare(persons[j], persons[j - 1]) == -1) { temp = persons[j - 1]; persons[j - 1] = persons[j]; persons[j] = temp; } } } }
|
пробую откомпилировать выдает 3 ошибки:
| Код | Error 1 Inconsistent accessibility: property type 'Delegati_kak_svoystva_klasswork_.Persons.CompareItems' is less accessible than property 'Delegati_kak_svoystva_klasswork_.Person.SortByName'
Error 2 Inconsistent accessibility: property type 'Delegati_kak_svoystva_klasswork_.Persons.CompareItems' is less accessible than property 'Delegati_kak_svoystva_klasswork_.Person.SortByAge'
Error 3 Inconsistent accessibility: property type 'Delegati_kak_svoystva_klasswork_.Persons.CompareItems' is less accessible than property 'Delegati_kak_svoystva_klasswork_.Person.SortByOkladName'
|
Помогите разобраться в чем дело.
Заранее спасибо!!! |