指定した比較演算子を使用して、並べ替えられた要素の ArrayList の一セクションを検索し、その要素の 0 から始まるインデックスを返します。
Overloads Public Overridable Function BinarySearch( _
ByVal index As Integer, _ ByVal count As Integer, _ ByVal value As Object, _ ByVal comparer As IComparer _) As Integer
[C#]
public virtual int BinarySearch(intindex,intcount,objectvalue,IComparercomparer);
[C++]
public: virtual int BinarySearch(intindex,intcount,Object* value,IComparer* comparer);
[JScript]
public function BinarySearch(
index : int,count : int,value : Object,comparer : IComparer) : int;
パラメータ
index
検索範囲の開始位置を示す 0 から始まるインデックス。count
検索する範囲の長さ。value
検索する Object 。値は null 参照 (Visual Basic では Nothing) に設定できます。comparer
要素を比較する場合に使用する IComparer 実装。または
各要素の IComparable 実装である既定の比較演算子を使用する場合は null 参照 (Visual Basic では Nothing) 。
戻り値
value が見つかった場合は、並べ替えられた ArrayList 内の value の 0 から始まるインデックス。見つからなかった場合は、負の値。これは、 value の次に大きい要素のインデックスのビットごとの補数です。ただし、大きい要素が存在しない場合は、 Count のビットごとの補数です。
例外
例外の種類 | 条件 |
---|---|
ArgumentException | index および count が ArrayList 内の有効な範囲を示していません。
または comparer が null 参照 (Visual Basic では Nothing) です。また、value と、 ArrayList の要素が、いずれも IComparable インターフェイスを実装していません。 |
InvalidOperationException | comparer が null 参照 (Visual Basic では Nothing) で、value が ArrayList の要素と異なる型です。 |
ArgumentOutOfRangeException | index が 0 未満です。
または count が 0 未満です。 |
解説
比較演算子は、要素を比較する方法をカスタマイズします。たとえば、 CaseInsensitiveComparer インスタンスを比較演算子として使用して、大文字と小文字を区別しない文字列検索を実行できます。
comparer が提供されている場合、 ArrayList の要素は、指定した IComparer 実装を使用して、指定した値と比較されます。 ArrayList が comparer で定義された並べ替え順序に従って並べ替えられていない場合は、結果が正しくない可能性があります。
comparer が null 参照 (Visual Basic では Nothing) の場合は、要素自体または指定した値によって提供される IComparable の実装を使用して比較が行われます。 ArrayList が IComparable の実装に従って並べ替えられていない場合は、結果が正しくない可能性があります。
null 参照 (Nothing) を任意の型と比較できます。このような比較を行っても、 IComparable を使用した場合に例外が生成されることはありません。並べ替え処理では、 null 参照 (Nothing) は、他のすべてのオブジェクトより小さいと見なされます。
ArrayList に同じ値の複数の要素が格納されている場合、メソッドは 1 つの要素だけを返します。必ずしも最初の要素ではなく、任意の要素が返されます。
指定した値が ArrayList に格納されていない場合、このメソッドは負の整数を返します。この負の整数に、ビットごとの補数演算 (~) を適用して、検索値よりも大きい最初の要素のインデックスを取得できます。値を ArrayList に挿入する場合、このインデックスを挿入ポイントとして使用して、並べ替え順を維持する必要があります。
このメソッドは O(log2 n) 操作です。 n は、所定の範囲内の要素数を示します。
必要条件
プラットフォーム: 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
参照
ArrayList クラス | ArrayList メンバ | System.Collections 名前空間 | ArrayList.BinarySearch オーバーロードの一覧 | IComparer | IComparable | カルチャを認識しないコレクションの操作の実行