2009-11-27 3 views

Répondre

9

Si le tableau est trié, alors c'est le plus rapide:

Array.BinarySearch(myArray, value) >= 0; 

Si le tableau est recherché beaucoup et rarement modifié, alors vous pouvez trouver utile de trier le tableau après modification (en utilisant Array.Sort) et d'utiliser ce qui précède. Dans le cas contraire, utilisez l'option que vous préférez:

Array.IndexOf(myArray, value) >= 0; //.Net 1 

Array.Exists(array, delegate(int x) { return x == value; }); //.Net 2 

myArray.Contains(value); //.Net 3 

IndexOf a les meilleures performances pour les tableaux non triés. La deuxième option utilise un délégué de prédicat et la troisième nécessite la création d'un objet énumérateur.

+0

Cette nouvelle méthode de Contains n'est pas très médiatisée. –

2

Enumerable.Contains si vous utilisez C# 3.0 ou ultérieur.

par exemple.

var contained = myArray.Contains(4); 
1
var myArray = new [] { 1, 2}; 
if myArray.Contains(1) 
{ 
do something 
} 

Vous devrez peut-être un using System.Linq;

Bonté,

Dan

4

Utilisez par exemple ceci, si vous voulez vérifier si votre tableau contient l'int 0:

if (your_int_array.Contains(0)) 
{ 
    //Code 
} 
1

Vous pouvez utiliser la méthode IndexOf:

int[] array = new int[] { 1, 2, 3 }; 
bool isArrayContains17 = Array.IndexOf(array, 17) > -1; 
0

Essayez cette fonction:

public static bool FindValueFromArray(object[] Values,object valueToSearch){ 
    bool retVal = false; 
    Array myArray = (Array)Values; 
    int found = Array.BinarySearch(myArray, valueToSearch); 
    if (found != -1){ 
     retVal = true; 
    } 
    return retVal; 
} 

Hope this helps.

+2

La recherche binaire ne fonctionne que si le tableau est trié –

+0

Et vous votez mon commentaire en fonction de cela? –

+0

J'ai +1. Mais j'ajouterais que le tri est nécessaire et que cela ne vaut vraiment la peine que si vous faites des recherches répétées. – RichardOD

3

Les Enumerable.Contains() est votre ami dans .NET Framework 3.5 ...

+1

Si vous utilisez .NET 3.5 – RichardOD

+0

@RichardOD: Vous avez raison. Modification de la réponse ... – EricSchaefer

Questions connexes