IList インターフェイス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
インデックスによって個別にアクセスできるオブジェクトの非ジェネリック コレクションを表します。
public interface class IList : System::Collections::ICollection
public interface IList : System.Collections.ICollection
[System.Runtime.InteropServices.ComVisible(true)]
public interface IList : System.Collections.ICollection
type IList = interface
interface ICollection
interface IEnumerable
[<System.Runtime.InteropServices.ComVisible(true)>]
type IList = interface
interface ICollection
interface IEnumerable
Public Interface IList
Implements ICollection
- 派生
- 属性
- 実装
例
次の例では、単純な固定サイズのリストを作成する IList インターフェイスの実装を示します。
using System;
using System.Collections;
class Program
{
static void Main()
{
var test = new SimpleList();
// Populate the List.
Console.WriteLine("Populate the List");
test.Add("one");
test.Add("two");
test.Add("three");
test.Add("four");
test.Add("five");
test.Add("six");
test.Add("seven");
test.Add("eight");
test.PrintContents();
Console.WriteLine();
// Remove elements from the list.
Console.WriteLine("Remove elements from the list");
test.Remove("six");
test.Remove("eight");
test.PrintContents();
Console.WriteLine();
// Add an element to the end of the list.
Console.WriteLine("Add an element to the end of the list");
test.Add("nine");
test.PrintContents();
Console.WriteLine();
// Insert an element into the middle of the list.
Console.WriteLine("Insert an element into the middle of the list");
test.Insert(4, "number");
test.PrintContents();
Console.WriteLine();
// Check for specific elements in the list.
Console.WriteLine("Check for specific elements in the list");
Console.WriteLine($"List contains \"three\": {test.Contains("three")}");
Console.WriteLine($"List contains \"ten\": {test.Contains("ten")}");
}
}
class SimpleList : IList
{
private object[] _contents = new object[8];
private int _count;
public SimpleList()
{
_count = 0;
}
// IList Members
public int Add(object value)
{
if (_count < _contents.Length)
{
_contents[_count] = value;
_count++;
return (_count - 1);
}
return -1;
}
public void Clear()
{
_count = 0;
}
public bool Contains(object value)
{
for (int i = 0; i < Count; i++)
{
if (_contents[i] == value)
{
return true;
}
}
return false;
}
public int IndexOf(object value)
{
for (int i = 0; i < Count; i++)
{
if (_contents[i] == value)
{
return i;
}
}
return -1;
}
public void Insert(int index, object value)
{
if ((_count + 1 <= _contents.Length) && (index < Count) && (index >= 0))
{
_count++;
for (int i = Count - 1; i > index; i--)
{
_contents[i] = _contents[i - 1];
}
_contents[index] = value;
}
}
public bool IsFixedSize
{
get
{
return true;
}
}
public bool IsReadOnly
{
get
{
return false;
}
}
public void Remove(object value)
{
RemoveAt(IndexOf(value));
}
public void RemoveAt(int index)
{
if ((index >= 0) && (index < Count))
{
for (int i = index; i < Count - 1; i++)
{
_contents[i] = _contents[i + 1];
}
_count--;
}
}
public object this[int index]
{
get
{
return _contents[index];
}
set
{
_contents[index] = value;
}
}
// ICollection members.
public void CopyTo(Array array, int index)
{
for (int i = 0; i < Count; i++)
{
array.SetValue(_contents[i], index++);
}
}
public int Count
{
get
{
return _count;
}
}
public bool IsSynchronized
{
get
{
return false;
}
}
// Return the current instance since the underlying store is not
// publicly available.
public object SyncRoot
{
get
{
return this;
}
}
// IEnumerable Members
public IEnumerator GetEnumerator()
{
// Refer to the IEnumerator documentation for an example of
// implementing an enumerator.
throw new NotImplementedException("The method or operation is not implemented.");
}
public void PrintContents()
{
Console.WriteLine($"List has a capacity of {_contents.Length} and currently has {_count} elements.");
Console.Write("List contents:");
for (int i = 0; i < Count; i++)
{
Console.Write($" {_contents[i]}");
}
Console.WriteLine();
}
}
// This code produces output similar to the following:
// Populate the List:
// List has a capacity of 8 and currently has 8 elements.
// List contents: one two three four five six seven eight
//
// Remove elements from the list:
// List has a capacity of 8 and currently has 6 elements.
// List contents: one two three four five seven
//
// Add an element to the end of the list:
// List has a capacity of 8 and currently has 7 elements.
// List contents: one two three four five seven nine
//
// Insert an element into the middle of the list:
// List has a capacity of 8 and currently has 8 elements.
// List contents: one two three four number five seven nine
//
// Check for specific elements in the list:
// List contains "three": True
// List contains "ten": False
Imports System.Collections
Public Class Program
Shared Sub Main()
Dim myList As New SimpleList()
' Populate the List.
Console.WriteLine("Populate the List")
myList.Add("one")
myList.Add("two")
myList.Add("three")
myList.Add("four")
myList.Add("five")
myList.Add("six")
myList.Add("seven")
myList.Add("eight")
myList.PrintContents()
Console.WriteLine()
' Remove elements from the list.
Console.WriteLine("Remove elements from the list")
myList.Remove("six")
myList.Remove("eight")
myList.PrintContents()
Console.WriteLine()
' Add an element to the end of the list.
Console.WriteLine("Add an element to the end of the list")
myList.Add("nine")
myList.PrintContents()
Console.WriteLine()
' Insert an element into the middle of the list.
Console.WriteLine("Insert an element into the middle of the list")
myList.Insert(4, "number")
myList.PrintContents()
Console.WriteLine()
' Check for specific elements in the list.
Console.WriteLine("Check for specific elements in the list")
Console.WriteLine($"List contains 'three': {myList.Contains("three")}")
Console.WriteLine($"List contains 'ten': {myList.Contains("ten")}")
End Sub
End Class
Public Class SimpleList
Implements IList
Private _contents(7) As Object
Private _count As Integer
Public Sub New()
_count = 0
End Sub
' IList members.
Public Function Add(ByVal value As Object) As Integer Implements IList.Add
If _count < _contents.Length Then
_contents(_count) = value
_count += 1
Return _count - 1
End If
Return -1
End Function
Public Sub Clear() Implements IList.Clear
_count = 0
End Sub
Public Function Contains(ByVal value As Object) As Boolean Implements IList.Contains
For i As Integer = 0 To Count - 1
If _contents(i) = value Then Return True
Next
Return False
End Function
Public Function IndexOf(ByVal value As Object) As Integer Implements IList.IndexOf
For i As Integer = 0 To Count - 1
If _contents(i) = value Then Return i
Next
Return -1
End Function
Public Sub Insert(ByVal index As Integer, ByVal value As Object) Implements IList.Insert
If _count + 1 <= _contents.Length AndAlso index < Count AndAlso index >= 0 Then
_count += 1
For i As Integer = Count - 1 To index Step -1
_contents(i) = _contents(i - 1)
Next
_contents(index) = value
End If
End Sub
Public ReadOnly Property IsFixedSize() As Boolean Implements IList.IsFixedSize
Get
Return True
End Get
End Property
Public ReadOnly Property IsReadOnly() As Boolean Implements IList.IsReadOnly
Get
Return False
End Get
End Property
Public Sub Remove(ByVal value As Object) Implements IList.Remove
RemoveAt(IndexOf(value))
End Sub
Public Sub RemoveAt(ByVal index As Integer) Implements IList.RemoveAt
if index >= 0 AndAlso index < Count Then
for i As Integer = index To Count - 2
_contents(i) = _contents(i + 1)
Next
_count -= 1
End If
End Sub
Public Property Item(ByVal index As Integer) As Object Implements IList.Item
Get
Return _contents(index)
End Get
Set(ByVal value As Object)
_contents(index) = value
End Set
End Property
' ICollection members.
Public Sub CopyTo(ByVal array As Array, ByVal index As Integer) Implements ICollection.CopyTo
For i As Integer = 0 To Count - 1
array.SetValue(_contents(i), index)
index += 1
Next
End Sub
Public ReadOnly Property Count() As Integer Implements ICollection.Count
Get
Return _count
End Get
End Property
Public ReadOnly Property IsSynchronized() As Boolean Implements ICollection.IsSynchronized
Get
Return False
End Get
End Property
' Return the current instance since the underlying store is not
' publicly available.
Public ReadOnly Property SyncRoot() As Object Implements ICollection.SyncRoot
Get
Return Me
End Get
End Property
' IEnumerable members.
Public Function GetEnumerator() As IEnumerator Implements IEnumerable.GetEnumerator
' Refer to the IEnumerator documentation for an example of
' implementing an enumerator.
Throw New NotImplementedException("The method or operation is not implemented.")
End Function
Public Sub PrintContents()
Console.WriteLine($"List has a capacity of {_contents.Length} and currently has {_count} elements.")
Console.Write("List contents:")
For i As Integer = 0 To Count - 1
Console.Write($" {_contents(i)}")
Next
Console.WriteLine()
End Sub
End Class
' This code produces output similar to the following:
' Populate the List:
' List has a capacity of 8 and currently has 8 elements.
' List contents: one two three four five six seven eight
'
' Remove elements from the list:
' List has a capacity of 8 and currently has 6 elements.
' List contents: one two three four five seven
'
' Add an element to the end of the list:
' List has a capacity of 8 and currently has 7 elements.
' List contents: one two three four five seven nine
'
' Insert an element into the middle of the list:
' List has a capacity of 8 and currently has 8 elements.
' List contents: one two three four number five seven nine
'
' Check for specific elements in the list:
' List contains "three": True
' List contains "ten": False
注釈
IList は、ICollection インターフェイスの子孫であり、すべての非ジェネリック リストの基本インターフェイスです。 IList 実装は、読み取り専用、固定サイズ、可変サイズの 3 つのカテゴリに分類されます。 読み取り専用 IList は変更できません。 固定サイズの IList では、要素を追加または削除することはできませんが、既存の要素を変更できます。 可変サイズの IList により、要素の追加、削除、および変更が可能になります。
このインターフェイスの汎用バージョンについては、System.Collections.Generic.IList<T>を参照してください。
プロパティ
Count |
ICollectionに含まれる要素の数を取得します。 (継承元 ICollection) |
IsFixedSize |
IList に固定サイズがあるかどうかを示す値を取得します。 |
IsReadOnly |
IList が読み取り専用かどうかを示す値を取得します。 |
IsSynchronized |
ICollection へのアクセスが同期されているかどうかを示す値を取得します (スレッド セーフ)。 (継承元 ICollection) |
Item[Int32] |
指定したインデックス位置にある要素を取得または設定します。 |
SyncRoot |
ICollectionへのアクセスを同期するために使用できるオブジェクトを取得します。 (継承元 ICollection) |
メソッド
Add(Object) |
IListに項目を追加します。 |
Clear() |
IListからすべての項目を削除します。 |
Contains(Object) |
IList に特定の値が含まれているかどうかを判断します。 |
CopyTo(Array, Int32) |
特定の Array インデックスから始まる ICollection の要素を Arrayにコピーします。 (継承元 ICollection) |
GetEnumerator() |
コレクションを反復処理する列挙子を返します。 (継承元 IEnumerable) |
IndexOf(Object) |
IList内の特定の項目のインデックスを決定します。 |
Insert(Int32, Object) |
指定したインデックス位置にある IList に項目を挿入します。 |
Remove(Object) |
特定のオブジェクトの最初の出現箇所を IListから削除します。 |
RemoveAt(Int32) |
指定したインデックス位置にある IList 項目を削除します。 |
拡張メソッド
Cast<TResult>(IEnumerable) |
IEnumerable の要素を指定した型にキャストします。 |
OfType<TResult>(IEnumerable) |
指定した型に基づいて、IEnumerable の要素をフィルター処理します。 |
AsParallel(IEnumerable) |
クエリの並列化を有効にします。 |
AsQueryable(IEnumerable) |
IEnumerable を IQueryableに変換します。 |
適用対象
こちらもご覧ください
.NET