5

是否有理由在字符串/列表上使用 .Contains 而不是 .IndexOf?我使用 .Contains 编写的大多数代码在不久之后都需要该项目的索引,因此必须同时执行这两个语句。但为什么不合二为一呢?

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

3 回答 3

7

你是对的,这IndexOf是一个比Contains. 但是,Contains它仍然非常有用,因为它明确地表示了操作。

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

不像操作那么明显

if(blah.Contains(something))
{
}

所以如果你需要索引,那么你应该使用IndexOf操作,如果你只需要知道字符串是否包含子字符串然后使用Contains.

将工具用于创建它的工作。

于 2010-05-14T01:43:31.790 回答
2

您想要使用 Contains 的一个原因是它有一个重载,可以让您指定一个IEqualityComparer<String>(如果您希望比较不区分大小写或其他内容)。IndexOf 没有这样的重载。

于 2010-05-14T01:46:10.607 回答
0

它们是用于不同目的的不同功能,但您可以使用 IndexOf 来模仿 Contains。

使用包含的原因?在Linq中,尤其是翻译成sql的时候,变成了比较简单的sql语句,IndexOf翻译起来比较复杂

于 2010-05-14T01:43:17.123 回答