Существует ли причина использовать.Contains на строке/списке вместо.IndexOf? Большая часть кода, что я записал бы использование.Contains, будет вскоре после нужна в индексе объекта и поэтому должна была бы сделать оба оператора. Но почему не оба в одном?
if ((index = blah.IndexOf(something) >= 0)
// i know that Contains is true and i also have the index
Вы правы, что IndexOf
является более общей операцией, чем Contains
. Тем не менее, Содержит
по-прежнему очень полезно, потому что он явно представляет операцию.
if(blah.IndexOf(something) >=0)
{
}
не такая очевидная операция, как
if(blah.Contains(something))
{
}
, поэтому, если вам нужен индекс, вы должны использовать операцию IndexOf
, если вам нужно только знать, содержит ли строка подстроку, тогда используйте Содержит
.
Используйте инструмент для работы, для которой он был создан.
Одна из причин, по которой вы хотели бы использовать Contains, заключается в том, что у него есть перегрузка, которая позволяет вам указать IEqualityComparer
(на случай, если вы хотите, чтобы сравнение было case- нечувствительный что ли). IndexOf не имеет такой перегрузки.
это разные функции, предназначенные для разных целей, но вы можете использовать IndexOf для имитации Contains.
Причина использования Contains? В Linq, особенно при переводе в sql, превращается в относительно простой оператор sql, IndexOf более сложен для перевода