Как найти, если значение находится в массиве в Visual C # - PullRequest
2 голосов
/ 27 ноября 2009

Если у меня есть массив целых чисел, и я хочу быстро проверить, есть ли определенное значение int в этом массиве, есть ли способ сделать это?

Ответы [ 7 ]

9 голосов
/ 27 ноября 2009

Если массив отсортирован, то это самое быстрое:

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

Если в массиве выполняется большой и редко изменяемый поиск, то может оказаться целесообразным отсортировать массив после модификации (используя Array.Sort) и использовать приведенное выше. В противном случае используйте опцию, которую вы предпочитаете:

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

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

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

IndexOf имеет лучшую производительность для несортированных массивов. Второй вариант использует предикатный делегат, а третий требует создания объекта перечислителя.

4 голосов
/ 27 ноября 2009

Используйте, например, это, если вы хотите проверить, содержит ли ваш массив int 0:

if (your_int_array.Contains(0))
{
    //Code
}
3 голосов
/ 27 ноября 2009

Метод Enumerable.Contains () - ваш друг в .NET-Framework 3.5 ...

2 голосов
/ 27 ноября 2009

Enumerable. Содержит , если вы используете C # 3.0 или более позднюю версию.

например.

var contained = myArray.Contains(4);
1 голос
/ 27 ноября 2009

Вы можете использовать метод IndexOf :

int[] array = new int[] { 1, 2, 3 };
bool isArrayContains17 = Array.IndexOf(array, 17) > -1;
1 голос
/ 27 ноября 2009
var myArray = new []  { 1, 2};
if myArray.Contains(1)
{
do something
}

Возможно, вам понадобится using System.Linq;

Доброжелательность,

Dan

0 голосов
/ 27 ноября 2009

Попробуйте эту функцию:

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;
}

Надеюсь, это поможет.

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