IList.Remove(Object) IList.Remove(Object) IList.Remove(Object) IList.Remove(Object) Method

定義

IList 移除特定物件之第一個符合的元素。Removes the first occurrence of a specific object from the IList.

public:
 void Remove(System::Object ^ value);
public void Remove (object value);
abstract member Remove : obj -> unit
Public Sub Remove (value As Object)

參數

value
Object Object Object Object

要從 IList 移除的物件。The object to remove from the IList.

例外狀況

IList 是唯讀的。The IList is read-only.

-或--or- IList 具有固定的大小。The IList has a fixed size.

範例

下列範例示範實作IList介面來建立簡單的清單中,固定大小清單。The following example demonstrates the implementation of the IList interface to create a simple list, fixed-size list. 這段程式碼是針對較大範例的一部分IList介面。This code is part of a larger example for the IList interface.

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();
    }
}
Public Class SimpleList
    Implements IList

    Private _contents(8) 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 - 1) Then

            _contents(_count) = value
            _count = _count + 1

            Return (_count - 1)

        Else

            Return -1
        End If
    End Function

    Public Sub Clear() Implements IList.Clear
        _count = 0
    End Sub

    Public Function Contains(ByVal value As Object) As Boolean Implements IList.Contains

        Dim inList As Boolean = False

        Dim i As Integer
        For i = 0 To Count

            If _contents(i) = value Then

                inList = True
                Exit For

            End If

        Next i

        Return inList
    End Function

    Public Function IndexOf(ByVal value As Object) As Integer Implements IList.IndexOf

        Dim itemIndex As Integer = -1

        Dim i As Integer
        For i = 0 To Count

            If _contents(i) = value Then

                itemIndex = i
                Exit For

            End If

        Next i

        Return itemIndex
    End Function

    Public Sub Insert(ByVal index As Integer, ByVal value As Object) Implements IList.Insert

        If (_count + 1) <= (_contents.Length - 1) And (index < Count) And (index >= 0) Then

            _count = _count + 1

            Dim i As Integer
            For i = Count - 1 To index

                _contents(i) = _contents(i - 1)
            Next i

            _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 And index < Count Then

            Dim i As Integer
            For i = index To Count - 1

                _contents(i) = _contents(i + 1)
            Next i
            _count = _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
        Dim j As Integer = index
        Dim i As Integer
        For i = 0 To Count
            array.SetValue(_contents(i), j)
            j = j + 1
        Next i
    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 Exception("The method or operation is not implemented.")
    End Function

    Public Sub PrintContents()

        Console.WriteLine("List has a capacity of {0} and currently has {1} elements.", _contents.Length - 1, _count)
        Console.Write("List contents:")

        Dim i As Integer
        For i = 0 To Count

            Console.Write(" {0}", _contents(i))
        Next i

        Console.WriteLine()

    End Sub
End Class

備註

在相鄰元素的集合中,例如清單,接在移除的元素之後的元素會向上移動以佔用空出的位置。In collections of contiguous elements, such as lists, the elements that follow the removed element move up to occupy the vacated spot. 如果集合具有索引,則移動之項目的索引也會更新。If the collection is indexed, the indexes of the elements that are moved are also updated. 集合的項目若在概念上群組成 Bucket (例如雜湊資料表),則不適用這項行為。This behavior does not apply to collections where elements are conceptually grouped into buckets, such as a hash table. 如果在 value 中找不到 IListIList 會保持不變,而且不會值回任何例外狀況。If value is not found in the IList, the IList remains unchanged and no exception is thrown.

給實施者的注意事項

如果value不在清單中,Remove(Object)方法應該執行任何動作。If value is not in the list, the Remove(Object) method should do nothing. 特別是,它應該會擲回例外狀況。In particular, it should not throw an exception.

適用於