2010-05-14 18 views
5

¿Hay alguna razón para usar. Contiene una cadena/lista en lugar de .IndexOf? La mayoría del código que escribiría usando .Contains necesitaría poco después el índice del artículo y, por lo tanto, tendría que hacer ambas afirmaciones. Pero ¿por qué no ambos en uno?collection/string .Contains vs collection/string.IndexOf

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

Respuesta

7

Tiene razón en que IndexOf es una operación más general que Contains. Sin embargo, Contains sigue siendo muy útil porque representa la operación explícitamente.

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

no es tan obvio como una operación

if(blah.Contains(something)) 
{ 
} 

lo que si necesita el índice, se debe usar la operación IndexOf, si sólo necesita saber si la cadena contiene la subcadena a continuación, use Contains.

Utilice la herramienta para el trabajo para el que fue creada.

0

son diferentes funciones destinadas a diferentes propósitos, pero puede usar IndexOf para imitar Contiene.

¿La razón para usar contiene? En Linq, especialmente cuando se traduce en sql, se convierte en una declaración sql relativamente simple, IndexOf es más complicado de traducir

2

Una de las razones por las que desea usar Contiene es que tiene una sobrecarga que le permite especificar IEqualityComparer<String> (en caso de que desee que la comparación no distinga entre mayúsculas y minúsculas o algo así). IndexOf no tiene esa sobrecarga.

Cuestiones relacionadas