Resharper предполагает, что параметр может иметь тип 'Базовый тип'

iptables (8) имеет модуль статистики, который может использоваться для соответствия каждому энному пакету. Для отбрасывания этого пакета просто добавьте ОТБРАСЫВАНИЕ-j .

21
задан John Saunders 15 September 2013 в 23:25
поделиться

2 ответа

Использование базовых типов для параметров имеет следующие преимущества:

  • Уменьшает ненужное связывание в вашем коде
  • Делает ваш код более гибким, позволяя использовать более широкий диапазон допустимых входных данных
  • Делает ваш более безопасный код за счет ограничения типов операций, которые могут выполняться на входе
  • Повышает производительность вашего кода за счет уменьшения необходимости выполнять преобразования между типами

Однако вы не всегда должны использовать базовый тип в вызове метода просто потому, что такой инструмент, как ReSharper, говорит, что это возможно. Вы должны убедиться, что использование и семантика методов ясны и что будущие изменения вряд ли потребуют перемещения вниз по иерархии наследования, что может нарушить существующий код.

В ваших примерах выше, использование IEnumerable вместо List позволяет вызывающим объектам вашего кода передавать не только объекты List, но также массивы, стеки, очереди и даже результаты вызовов LINQ (которые в основном возвращают IEnumerable). Поскольку ваш код выполняет итерацию только по коллекции, ему не нужно знать о List. Это также означает, что потребителям вашего кода не придется преобразовывать свои коллекции в копии типа List только для того, чтобы передать их вашему методу.

37
ответ дан 29 November 2019 в 20:21
поделиться
8
ответ дан 29 November 2019 в 20:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: