次の方法で共有


Array.BinarySearch メソッド (Array, Int32, Int32, Object, IComparer)

指定した IComparer インターフェイスを使用して、1 次元の並べ替え済み Array 範囲の中から値を検索します。

Overloads Public Shared Function BinarySearch( _
   ByVal array As Array, _   ByVal index As Integer, _   ByVal length As Integer, _   ByVal value As Object, _   ByVal comparer As IComparer _) As Integer
[C#]
public static int BinarySearch(Arrayarray,intindex,intlength,objectvalue,IComparercomparer);
[C++]
public: static int BinarySearch(Array* array,intindex,intlength,Object* value,IComparer* comparer);
[JScript]
public static function BinarySearch(
   array : Array,index : int,length : int,value : Object,comparer : IComparer) : int;

パラメータ

  • array
    検索する 1 次元 Array

  • index
    検索範囲の開始位置を示すインデックス。

  • length
    検索する範囲の長さ。

  • value
    検索するオブジェクト。

  • comparer
    要素を比較する場合に使用する IComparer 実装。

    または

    各要素の IComparable 実装を使用する場合は null 参照 (Visual Basic では Nothing) 。

戻り値

value が見つかった場合は、指定した array での指定した value のインデックス。

または

value が見つからず、 valuearray 内の 1 つ以上の要素よりも小さい場合は、負の値。これは、 value より大きい最初の要素のインデックスのビットごとの補数となります。

または

value が見つからず、 valuearray 内のどの要素よりも大きい場合は、負の値。これは、最後の要素のインデックス + 1 のビットごとの補数となります。

例外

例外の種類 条件
ArgumentNullException array が null 参照 (Visual Basic では Nothing) です。
RankException array が多次元です。
ArgumentOutOfRangeException index が array の下限より小さい値です。

または

length が 0 未満です。

ArgumentException index および length が array 内の有効な範囲を指定していません。

または

comparer が null 参照 (Visual Basic では Nothing) であり、value が、array の要素と互換性がない型です。

InvalidOperationException comparer が null 参照 (Visual Basic では Nothing) であり、value と array の要素が、いずれも IComparable インターフェイスを実装していません。

解説

比較演算子は、要素を比較する方法をカスタマイズします。たとえば、 System.Collections.CaseInsensitiveComparer を比較演算子として使用して、大文字と小文字を区別しない文字列検索を実行できます。

comparer が null 参照 (Visual Basic では Nothing) でない場合は、array の要素は、指定した IComparer 実装を使用して、指定した値と比較されます。 array の要素が、 comparer に基づいて、昇順にまだ並べ替えられていない場合は、結果が正しくない可能性があります。

comparer が null 参照 (Nothing) の場合は、要素自体または指定した値によって提供される IComparable の実装を使用して比較が行われます。array の要素が、 IComparable 実装に基づいて、昇順にまだ並べ替えられていない場合は、結果が正しくない可能性があります。

重複する要素を使用できます。 Arrayvalue と等しい要素が複数含まれている場合、このメソッドは 1 つの要素のインデックスしか返しませんが、必ずしも該当する 1 番目の要素のインデックスとは限りません。

null 参照 (Nothing) は、常に他の任意の型と比較できます。したがって、 IComparable を使用して null 参照 (Nothing) との比較を行っても、例外は生成されません。並べ替え処理では、 null 参照 (Nothing) は、他のすべてのオブジェクトより小さいと見なされます。

指定した値が Array に格納されていない場合、このメソッドは負の整数を返します。返されたこの負数にビットごとの補数演算子 (~) を適用し、指定した検索値よりも大きい要素がある場合は、そのうちの最初の要素のインデックスを生成できます。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard

参照

Array クラス | Array メンバ | System 名前空間 | Array.BinarySearch オーバーロードの一覧 | IComparer | IComparable | Sort | カルチャを認識しない配列の操作の実行