Делаю свою реализацию коллекции на основе массива. Наследуюсь от шаблонного интерфейса Collection.
Проблемы с реализацией свойства Count. Я сделал так:
public int Count
{
get
{
int counter = 0;
while (array[counter] != null)
counter++;
return counter;
}
}
Мне же указали, что она является не очень правильной
Для того, чтобы обратиться к существующей коллекции по индексу, нужно знать максимальное значение индекса. Иначе произойдёт исключение при выходе за границу коллекции.
Максимальный индекс коллекции вы можете спросить у самой коллекции. Это её свойство .Count (или .Length, если это массив). Ну и раз у вас есть длина, ничего не нужно вычислять.
Вы ухитрились реализовать операцию необычайно неэффективным способом: вы перебираете все элементы! Такой ужасный способ работает на сишных строках, потому что (а) в сишной строке гарантированно есть финальный нулевой элемент, и промежуточных нулевых элементов нет, и (б) другого, эффективного способа найти длину сишной строки нет. Но для высокоуровневых коллекций вы должны использовать быстрые методы.
Если в вашей реализации длина массива не обязательно равна длине коллекции, заведите поле count, содержащее реальную длину коллекции, и поддерживайте его в правильном состоянии. От коллекций ожидается, что опрос длины происходит за O(1) (то есть, скорость не зависит от числа элементов).
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости