SortedDictionary ContainsKey неверный метод? - PullRequest
1 голос
/ 20 марта 2012

Так что в принципе у меня есть что-то вроде этого:

private SortedDictionary<Priority, List<String>> example = new SortedDictionary<Priority, List<String>>(new PriorityComparer());

public void Submit(Priority priority, String test)
{
    if (!example.ContainsKey(priority))
    {
        example.Add(priority, new List<String> { test });
        // adds an entry with the key (Priority.Low) twice, why?
    }
    else
    {
        example[priority].Add(test); // never called
    }
}

Для отправки нескольких тестовых элементов:

Submit(Priority.Critical, "test4");
Submit(Priority.Low, "test");
Submit(Priority.Normal, "test3");
Submit(Priority.Low, "test2");

Приоритет - это просто перечисление с уровнями приоритета в диапазоне от низкого (0) до критического (10). Это просто типичное перечисление, ничего особенного.

Приоритетный компаратор:

public class PriorityComparer : IComparer<Priority>
{
    public int Compare(Priority x, Priority y)
    {
        if (x > y)
        {
            return -1;
        }
        else
        {
            return 1;
        }
    }
}

1 Ответ

9 голосов
/ 20 марта 2012

Ваша реализация сравнения не завершена.Вы пропускаете случай, когда x == y (верните 0).

...