集合/字符串.Contains与集合/字符串.IndexOf

5

在使用字符串/列表时,为什么要使用.Contains而不是.IndexOf? 大多数使用.Contains的代码很快就需要该项的索引,因此必须执行两个语句。但为什么不把两者合并呢?

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

7

您说得没错,IndexOfContains更为通用。但是,Contains仍然非常有用,因为它明确地表示了操作。

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

作为一个操作,它并不像显而易见

if(blah.Contains(something))
{
}

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

用它被创建出来的工具。


2

使用Contains的一个原因是它有一个重载,允许您指定一个IEqualityComparer<String>(如果您希望比较不区分大小写或其他情况)。IndexOf没有这样的重载。


0

它们是为不同目的而设计的不同函数,但您可以使用IndexOf来模拟Contains。

为什么要使用Contains?在Linq中,特别是当转换为SQL时,它会被转换成相对简单的SQL语句,而IndexOf更难以翻译。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接