Делаю свою реализацию коллекции на основе массива. Наследуюсь от шаблонного интерфейса Collection.
Проблемы с реализацией свойства Count. Я сделал так:
public int Count
{
get
{
int counter = 0;
while (array[counter] != null)
counter++;
return counter;
}
}
Мне же указали, что она является не очень правильной
Для того, чтобы обратиться к существующей коллекции по индексу, нужно знать максимальное значение индекса. Иначе произойдёт исключение при выходе за границу коллекции.
Максимальный индекс коллекции вы можете спросить у самой коллекции. Это её свойство .Count
(или .Length
, если это массив). Ну и раз у вас есть длина, ничего не нужно вычислять.
Вы ухитрились реализовать операцию необычайно неэффективным способом: вы перебираете все элементы! Такой ужасный способ работает на сишных строках, потому что (а) в сишной строке гарантированно есть финальный нулевой элемент, и промежуточных нулевых элементов нет, и (б) другого, эффективного способа найти длину сишной строки нет. Но для высокоуровневых коллекций вы должны использовать быстрые методы.
Если в вашей реализации длина массива не обязательно равна длине коллекции, заведите поле count
, содержащее реальную длину коллекции, и поддерживайте его в правильном состоянии. От коллекций ожидается, что опрос длины происходит за O(1) (то есть, скорость не зависит от числа элементов).
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как вставить данные в поля страницы и их отсабмитить, но без селениума
This question already has an answer here:
Начал работать из стим API, могу получить полный список трейдов (входящих и тех что от меня), но вот как принимать их разобраться не могуНашел...
Имеется DataGrid, в нем несколько колонок и 1 DataGridComboBoxColumn, хотелось бы для каждого DataGridComboBoxColumn видеть различный набор элементов Xaml