OrderedBag<T> не пренарежда?


15
Здравейте, тъкмо си пишех една приоритетна опашка с OrderedBag



Отговори



11

Пробвай с:

        public int CompareTo(Test other)

        {
            if (this.A > other.A)
            {
                return other.A;
            }
            else
            {
                return this.A;
            }
        }
 
Аз не съм много добър в сравненията и подредбите, но мисля, че трябва да има някакъв тест различен от CompareTo... Пробвай мисля, че трябва да работи...
 
//Eто тук има едни интересни неща за OrderedBag, може да ти отговорят на някои въпроси :)

от krasi.gitsov (629 точки)


0
:)))))) Проработи. Мерси. Но не мога да разбера не трябва ли да връща по концепция -1, 0, 1, а не самата ст-ст?

от Iliev (1241 точки)

0
Да, по концепция трябва да връща -1, 0, 1.
Проблемът по-скоро е, че когато промениш външно елемент от OrderedBag-а, както си направил, той няма как да знае, че това се е случило. Странно, че въобще е възможно(т.е. че не ти налага извличан на елемент първо).

от LTsonov (4149 точки)



6
Това е наистина много интересно. Попринцип индексатора на OrderedBag-a е readonly и ако имаме чанта от числа и се опитаме да направим numbers[1] = 1;, ще изгърми при компилация, но ако имаме чанта от обекти и променим някое поле, примерно test[1].A = 3; ще го промени и няма да пренареди. Мерси, че повдигна въпроса.

от d.madjarov (6820 точки)