набор/строка.Contains по сравнению с набором/строкой. IndexOf

Существует ли причина использовать.Contains на строке/списке вместо.IndexOf? Большая часть кода, что я записал бы использование.Contains, будет вскоре после нужна в индексе объекта и поэтому должна была бы сделать оба оператора. Но почему не оба в одном?

if ((index = blah.IndexOf(something) >= 0)
    // i know that Contains is true and i also have the index
5
задан John Saunders 14 May 2010 в 02:23
поделиться

3 ответа

Вы правы, что IndexOf является более общей операцией, чем Contains . Тем не менее, Содержит по-прежнему очень полезно, потому что он явно представляет операцию.

if(blah.IndexOf(something) >=0)
{
}

не такая очевидная операция, как

if(blah.Contains(something))
{
}

, поэтому, если вам нужен индекс, вы должны использовать операцию IndexOf , если вам нужно только знать, содержит ли строка подстроку, тогда используйте Содержит .

Используйте инструмент для работы, для которой он был создан.

7
ответ дан 14 December 2019 в 01:03
поделиться

Одна из причин, по которой вы хотели бы использовать Contains, заключается в том, что у него есть перегрузка, которая позволяет вам указать IEqualityComparer (на случай, если вы хотите, чтобы сравнение было case- нечувствительный что ли). IndexOf не имеет такой перегрузки.

2
ответ дан 14 December 2019 в 01:03
поделиться

это разные функции, предназначенные для разных целей, но вы можете использовать IndexOf для имитации Contains.

Причина использования Contains? В Linq, особенно при переводе в sql, превращается в относительно простой оператор sql, IndexOf более сложен для перевода

0
ответ дан 14 December 2019 в 01:03
поделиться
Другие вопросы по тегам:

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