принимаемых параметрах приватного метода, к примеру, мне необходим доступ по индексу, тогда если я использую IReadOnlyCollection, то приходится вызывать toArray, но если использую массив, тогда если у меня на руках List, то чтобы передать его в метод тоже нужно вызывать toArray, при этом, наверное, хотелось бы чтобы у похожих методов была похожие параметры, а не где-то массив, а где-то IReadOnlyCollection, в таком случае лучше везде использовать IReadOnlyList? Или лучше, например, кастануть лист к массиву? При этом иммутабельность мне не нужна
Не могу сказать что лучше, но для доступа по индексу можно использовать ElementAt
Зависит от контекста задачи и метода. Общего ответа быть не может тут.
хорошо, а например, метод чтобы сформировать объект, который будет возвращать, использует лист, лучше ли в таком случае его и вернуть как IEnumarable или скастовать к массиву? Решарпер советует IEnumerable, но я ведь знаю, что у меня там всегда не lazy коллекция
AVOID using ElementAt() in certain scenarios!!! If you know you're going to look up each element, and you have (or could have) over 500, then just call ToArray(), store it in a reusable array variable, and index it off that way. For example; my code was reading data from of an Excel file. I was using ElementAt() to find the SharedStringItem my Cell was referencing. With 500 or less lines, you probably won't notice the difference. With 16K lines, it was taking 100 seconds.
то, что мне нужен перфоманс, и использовать ElementAt() для итерации не очень,и лучше кастануть к массиву
А типа уже нужен? Уже в него все уперлось? Бенчмарки уже есть?
Ты завёл абстрактный разговор за перформансом без никаких вводных данных и тебе даже в цитате пишут что до 500 абсолютно побоку. Ты либо давай полный набор вводных и умные дядьки закидают тебя умными словами про как лучше, либо разговор ни о чём.
нет, но мне сказали написать максимально эффективно с точки зрения количества операция ( ну и времени их выполнения)
Обсуждают сегодня