collection / string. Содержит vs collection / string.IndexOf - PullRequest
5 голосов
/ 14 мая 2010

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

if ((index = blah.IndexOf(something) >= 0)
    // i know that Contains is true and i also have the index

Ответы [ 3 ]

7 голосов
/ 14 мая 2010

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

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

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

if(blah.Contains(something))
{
}

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

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

2 голосов
/ 14 мая 2010

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

0 голосов
/ 14 мая 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...