정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

Array.BinarySearch 메서드 (Array, Object, IComparer)

2013-12-13

지정한 IComparer 인터페이스를 사용하여 1차원으로 정렬된 전체 Array에서 값을 검색합니다.

Namespace:  System
어셈블리:  mscorlib(mscorlib.dll)

public static int BinarySearch(
	Array array,
	Object value,
	IComparer comparer
)

매개 변수

array
형식: System.Array
검색할 1차원으로 정렬된 Array입니다.
value
형식: System.Object
검색할 개체입니다.
comparer
형식: System.Collections.IComparer
요소를 비교할 때 사용하는 IComparer 구현입니다.
-또는-
각 요소의 IComparable 구현을 사용할 경우 null입니다.

반환 값

형식: System.Int32
지정된 arrayvalue가 있는 경우 해당 value의 인덱스입니다. value가 없고 valuearray에 있는 하나 이상의 요소보다 작은 경우 value보다 큰 첫째 요소 인덱스의 비트 보수인 음수입니다. value가 없고 valuearray에 있는 요소보다 큰 경우 마지막 요소에 1을 더한 인덱스의 비트 보수인 음수입니다.

예외조건
ArgumentNullException

arraynull인 경우

RankException

array가 다차원 배열인 경우

ArgumentException

comparernull이고 value의 형식이 array의 요소와 호환되지 않는 경우

InvalidOperationException

comparernull이고, valueIComparable 인터페이스를 구현하지 않으며, 검색에서 IComparable 인터페이스를 구현하지 않는 요소를 발견하는 경우

Array에 지정한 값이 없는 경우 해당 메서드는 음의 정수를 반환합니다. 음수 결과에 비트 보수 연산자(~)를 적용(Visual Basic의 경우 음수 결과와 -1에 대해 Xor 수행)하여 인덱스를 생성할 수 있습니다. 이 인덱스가 배열 크기보다 크거나 같으면 배열에 value보다 큰 요소가 없습니다. 그렇지 않으면 value보다 큰 첫 번째 요소의 인덱스입니다.

비교자는 요소를 비교하는 방법을 사용자 지정합니다.

comparernull이 아닌 경우 지정한 IComparer 구현을 사용하여 array의 요소를 지정한 값과 비교합니다. array의 요소는 comparer에서 정의된 정렬 순서에 따라 값이 증가하도록 정렬되어 있어야 합니다. 그렇지 않으면 잘못된 결과가 반환될 수 있습니다.

comparernull인 경우 요소 자체 또는 지정한 값에서 제공하는 IComparable 구현을 사용하여 비교를 수행합니다. array의 요소는 IComparable 구현에 정의된 정렬 순서에 따라 값이 증가하도록 정렬되어 있어야 합니다. 그렇지 않으면 잘못된 결과가 반환될 수 있습니다.

참고참고:

comparernull이고 valueIComparable 인터페이스를 구현하지 않으면 array의 요소는 검색이 시작되기 전에 IComparable에 대해 테스트되지 않습니다. 검색에서 IComparable을 구현하지 않는 요소를 발견하면 예외가 발생합니다.

요소는 중복할 수 있습니다. Arrayvalue와 동일한 요소가 두 개 이상 포함된 경우, 해당 메서드는 발견되는 대상 중 하나에 대한 인덱스만 무작위로 반환합니다.

null은 항상 다른 모든 참조 형식과 비교될 수 있으므로 null과 비교하더라도 예외가 생성되지는 않습니다. 정렬할 때 null은 다른 개체보다 작은 것으로 간주됩니다.

참고참고:

   테스트된 모든 요소의 경우 valuenull인 경우에도 적절한 IComparable 구현에 value가 전달됩니다. 즉, IComparable 구현에서 지정된 요소를 null과 비교하는 방법을 결정합니다.

이 메서드는 O(log n) 연산이며, 여기서 narrayLength입니다.

Windows Phone OS

지원되는 버전: 8.0

표시: