C#のIListインターフェースとは?役割と主なプロパティ・メソッドを解説
IListインターフェースの概要
IListインターフェースは、インデックスを使って個々の要素にアクセスできる非ジェネリック型(non-generic)のオブジェクトコレクションを表すインターフェースです。System.Collections名前空間に属しており、ArrayListなどのコレクションクラスがこのインターフェースを実装しています。
ジェネリック版のIList<T>と異なり、異なる型のオブジェクトを同一のコレクションに格納できる一方、取り出す際には明示的なキャストが必要になる点に注意しましょう。
IListインターフェースの主なプロパティ
IListインターフェースには、以下のプロパティが定義されています。
| No. | プロパティ名と説明 |
|---|---|
| 1 | Count ICollectionに格納されている要素の数を取得します。 |
| 2 | IsFixedSize IListが固定サイズかどうかを示す値を取得します。 |
| 3 | IsReadOnly IListが読み取り専用かどうかを示す値を取得します。 |
| 4 | IsSynchronized ICollectionへのアクセスが同期されている(スレッドセーフである)かどうかを示す値を取得します。 |
| 5 | Item[Int32] 指定したインデックス位置にある要素を取得または設定します。 |
IListインターフェースの主なメソッド
次に、IListインターフェースで利用できる主要なメソッドを見ていきましょう。
| No. | メソッド名と説明 |
|---|---|
| 1 | Add(object) IListの末尾に項目を追加し、追加した位置のインデックスを返します。 |
| 2 | Clear() IListからすべての項目を削除します。 |
| 3 | Contains(object) リスト内に指定した値が存在するかどうかを判定します。 |
| 4 | GetEnumerator() コレクションを反復処理するための列挙子(IEnumerator)を返します。 |
| 5 | IndexOf(object) IList内における指定した項目のインデックスを返します。見つからない場合は -1 を返します。 |
| 6 | Remove(object) 指定したオブジェクトの最初に出現した箇所を削除します。 |
使用例
以下は、IListとして宣言した変数にArrayListを代入し、基本的な操作を行うサンプルコードです。
using System;
using System.Collections;
class Program
{
static void Main()
{
// IList型として宣言(実体はArrayList)
IList list = new ArrayList();
// 要素の追加
list.Add("りんご");
list.Add(100);
// インデックスによるアクセス
Console.WriteLine(list[0]); // 出力: りんご
// 要素の検索
Console.WriteLine(list.Contains(100)); // 出力: True
Console.WriteLine(list.IndexOf("りんご")); // 出力: 0
// 要素の削除
list.Remove("りんご");
Console.WriteLine(list.Count); // 出力: 1
}
}まとめ
IListインターフェースは、インデックスベースで柔軟に要素を操作できるコレクションの共通契約を提供します。ただし、非ジェネリックであるためボックス化やキャストのコストが発生する場合があります。新規開発では型安全なIList<T>やList<T>の利用が推奨されますが、既存コードの保守や古いAPIとの連携ではIListの理解が不可欠です。
-
Twitterのバイオとは?意味・変更方法と魅力的な例文を徹底解説
Twitterのバイオとは?その意味と役割Twitterのバイオ(自己紹介文)は、プロフィール設定を構成する重要な要素のひとつです。プロフィール画面では、名前とハンドルネーム(@ユーザー名)の下に表示されます。自分がどのような人物なのかを短く紹介したり、興味や関心を伝えたり、自分のビジネスをアピールしたりするために活用しましょう。バイオの変更方法バイオはプロフィールの編集からいつでも変更できます。ハッシュタグ(#)や@ユーザー名を組み合わせれば、より多くの人に自分のアカウントを見つけてもらいやすくなります。なお、バイオにはスペースを含めて160文字までという文字数制限がある点に注意してください
-
Pythonの&=演算子とは?ビット演算とインプレース代入の仕組みを解説
&=演算子の正体:object.__iand__()メソッドPythonにおける &= 演算子は、object.__iand__() メソッドに対するシンタックスシュガー(糖衣構文)です。公式ドキュメントには以下のように記載されています。「これらのメソッドは、拡張代入演算子(+=、-=、*=、@=、/=、//=、%=、**=、<<=、>>=、&=、^=、|=)を実装するために呼び出されます。これらのメソッドは、可能な限りインプレース(self自身を直接変更する形)で操作を行い、その結果を返すことが求められます(返り値はselfである必要はありませ