Represents a non-generic collection of objects that can be individually accessed by index.
Assembly: mscorlib (in mscorlib.dll)
The IList type exposes the following members.
Name | Description | |
---|---|---|
Count | Gets the number of elements contained in the ICollection. (Inherited from ICollection.) | |
IsFixedSize | Gets a value indicating whether the IList has a fixed size. | |
IsReadOnly | Gets a value indicating whether the IList is read-only. | |
IsSynchronized | Gets a value indicating whether access to the ICollection is synchronized (thread safe). (Inherited from ICollection.) | |
Item | Gets or sets the element at the specified index. | |
SyncRoot | Gets an object that can be used to synchronize access to the ICollection. (Inherited from ICollection.) |
Name | Description | |
---|---|---|
Add | Adds an item to the IList. | |
Clear | Removes all items from the IList. | |
Contains | Determines whether the IList contains a specific value. | |
CopyTo | Copies the elements of the ICollection to an Array, starting at a particular Array index. (Inherited from ICollection.) | |
GetEnumerator | Returns an enumerator that iterates through a collection. (Inherited from IEnumerable.) | |
IndexOf | Determines the index of a specific item in the IList. | |
Insert | Inserts an item to the IList at the specified index. | |
Remove | Removes the first occurrence of a specific object from the IList. | |
RemoveAt | Removes the IList item at the specified index. |
Name | Description | |
---|---|---|
AsParallel | Enables parallelization of a query. (Defined by ParallelEnumerable.) | |
AsQueryable | Converts an IEnumerable to an IQueryable. (Defined by Queryable.) | |
Cast<TResult> | Converts the elements of an IEnumerable to the specified type. (Defined by Enumerable.) | |
OfType<TResult> | Filters the elements of an IEnumerable based on a specified type. (Defined by Enumerable.) |
IList is a descendant of the ICollection interface and is the base interface of all non-generic lists. IList implementations fall into three categories: read-only, fixed-size, and variable-size. A read-only IList cannot be modified. A fixed-size IList does not allow the addition or removal of elements, but it allows the modification of existing elements. A variable-size IList allows the addition, removal, and modification of elements.
For the generic version of this interface, see System.Collections.Generic.IList<T>.
The following example demonstrates the implementation of the IList interface to create a simple list, fixed-size list.
using System; using System.Collections; class Program { static void Main() { SimpleList 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\": {0}", test.Contains("three")); Console.WriteLine("List contains \"ten\": {0}", test.Contains("ten")); } } // class Program 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); } else { return -1; } } public void Clear() { _count = 0; } public bool Contains(object value) { bool inList = false; for (int i = 0; i < Count; i++) { if (_contents[i] == value) { inList = true; break; } } return inList; } public int IndexOf(object value) { int itemIndex = -1; for (int i = 0; i < Count; i++) { if (_contents[i] == value) { itemIndex = i; break; } } return itemIndex; } 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) { int j = index; for (int i = 0; i < Count; i++) { array.SetValue(_contents[i], j); j++; } } 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 Exception("The method or operation is not implemented."); } public void PrintContents() { Console.WriteLine("List has a capacity of {0} and currently has {1} elements.", _contents.Length, _count); Console.Write("List contents:"); for (int i = 0; i < Count; i++) { Console.Write(" {0}", _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
引用自 :http://msdn.microsoft.com/en-us/library/system.collections.ilist.aspx