次の方法で共有


NameObjectCollectionBase.BaseRemoveAt(Int32) メソッド

定義

NameObjectCollectionBase インスタンスの指定したインデックスにあるエントリを削除します。

protected:
 void BaseRemoveAt(int index);
protected void BaseRemoveAt (int index);
member this.BaseRemoveAt : int -> unit
Protected Sub BaseRemoveAt (index As Integer)

パラメーター

index
Int32

削除するエントリの 0 から始まるインデックス。

例外

index が、コレクションのインデックスの正しい範囲から外れています。

コレクションは読み取り専用です。

次のコード例では、 と BaseRemoveAt を使用BaseRemoveして から要素をNameObjectCollectionBase削除します。

#using <System.dll>
using namespace System;
using namespace System::Collections;
using namespace System::Collections::Specialized;

public ref class MyCollection : public NameObjectCollectionBase  {

private:
   DictionaryEntry^ _de;

   // Gets a key-and-value pair (DictionaryEntry) using an index.
public:
   property DictionaryEntry^ default[ int ]  {
      DictionaryEntry^ get(int index)  {
         _de->Key = this->BaseGetKey( index );
         _de->Value = this->BaseGet( index );
         return( _de );
      }
   }

   // Adds elements from an IDictionary into the new collection.
   MyCollection( IDictionary^ d )  {

      _de = gcnew DictionaryEntry();

      for each ( DictionaryEntry^ de in d )  {
         this->BaseAdd( (String^) de->Key, de->Value );
      }
   }

   // Removes an entry with the specified key from the collection.
   void Remove( String^ key )  {
      this->BaseRemove( key );
   }

   // Removes an entry in the specified index from the collection.
   void Remove( int index )  {
      this->BaseRemoveAt( index );
   }
};

public ref class SamplesNameObjectCollectionBase  {

public:
   static void Main()  {

      // Creates and initializes a new MyCollection instance.
      IDictionary^ d = gcnew ListDictionary();
      d->Add( "red", "apple" );
      d->Add( "yellow", "banana" );
      d->Add( "green", "pear" );
      MyCollection^ myCol = gcnew MyCollection( d );
      Console::WriteLine( "Initial state of the collection (Count = {0}):", myCol->Count );
      PrintKeysAndValues( myCol );

      // Removes an element at a specific index.
      myCol->Remove( 1 );
      Console::WriteLine( "After removing the element at index 1 (Count = {0}):", myCol->Count );
      PrintKeysAndValues( myCol );

      // Removes an element with a specific key.
      myCol->Remove( "red" );
      Console::WriteLine( "After removing the element with the key \"red\" (Count = {0}):", myCol->Count );
      PrintKeysAndValues( myCol );

   }

   static void PrintKeysAndValues( MyCollection^ myCol )  {
      for ( int i = 0; i < myCol->Count; i++ )  {
         Console::WriteLine( "[{0}] : {1}, {2}", i, myCol[i]->Key, myCol[i]->Value );
      }
   }
};

int main()
{
    SamplesNameObjectCollectionBase::Main();
}

/*
This code produces the following output.

Initial state of the collection (Count = 3):
[0] : red, apple
[1] : yellow, banana
[2] : green, pear
After removing the element at index 1 (Count = 2):
[0] : red, apple
[1] : green, pear
After removing the element with the key "red" (Count = 1):
[0] : green, pear

*/
using System;
using System.Collections;
using System.Collections.Specialized;

public class MyCollection : NameObjectCollectionBase  {

   private DictionaryEntry _de = new DictionaryEntry();

   // Gets a key-and-value pair (DictionaryEntry) using an index.
   public DictionaryEntry this[ int index ]  {
      get  {
         _de.Key = this.BaseGetKey( index );
         _de.Value = this.BaseGet( index );
         return( _de );
      }
   }

   // Adds elements from an IDictionary into the new collection.
   public MyCollection( IDictionary d )  {
      foreach ( DictionaryEntry de in d )  {
         this.BaseAdd( (String) de.Key, de.Value );
      }
   }

   // Removes an entry with the specified key from the collection.
   public void Remove( String key )  {
      this.BaseRemove( key );
   }

   // Removes an entry in the specified index from the collection.
   public void Remove( int index )  {
      this.BaseRemoveAt( index );
   }
}

public class SamplesNameObjectCollectionBase  {

   public static void Main()  {

      // Creates and initializes a new MyCollection instance.
      IDictionary d = new ListDictionary();
      d.Add( "red", "apple" );
      d.Add( "yellow", "banana" );
      d.Add( "green", "pear" );
      MyCollection myCol = new MyCollection( d );
      Console.WriteLine( "Initial state of the collection (Count = {0}):", myCol.Count );
      PrintKeysAndValues( myCol );

      // Removes an element at a specific index.
      myCol.Remove( 1 );
      Console.WriteLine( "After removing the element at index 1 (Count = {0}):", myCol.Count );
      PrintKeysAndValues( myCol );

      // Removes an element with a specific key.
      myCol.Remove( "red" );
      Console.WriteLine( "After removing the element with the key \"red\" (Count = {0}):", myCol.Count );
      PrintKeysAndValues( myCol );
   }

   public static void PrintKeysAndValues( MyCollection myCol )  {
      for ( int i = 0; i < myCol.Count; i++ )  {
         Console.WriteLine( "[{0}] : {1}, {2}", i, myCol[i].Key, myCol[i].Value );
      }
   }
}


/*
This code produces the following output.

Initial state of the collection (Count = 3):
[0] : red, apple
[1] : yellow, banana
[2] : green, pear
After removing the element at index 1 (Count = 2):
[0] : red, apple
[1] : green, pear
After removing the element with the key "red" (Count = 1):
[0] : green, pear

*/
Imports System.Collections
Imports System.Collections.Specialized

Public Class MyCollection
   Inherits NameObjectCollectionBase

   Private _de As New DictionaryEntry()

   ' Gets a key-and-value pair (DictionaryEntry) using an index.
   Default Public ReadOnly Property Item(index As Integer) As DictionaryEntry
      Get
         _de.Key = Me.BaseGetKey(index)
         _de.Value = Me.BaseGet(index)
         Return _de
      End Get
   End Property

   ' Adds elements from an IDictionary into the new collection.
   Public Sub New(d As IDictionary)
      Dim de As DictionaryEntry
      For Each de In  d
         Me.BaseAdd(CType(de.Key, [String]), de.Value)
      Next de
   End Sub

   ' Removes an entry with the specified key from the collection.
   Overloads Public Sub Remove(key As [String])
      Me.BaseRemove(key)
   End Sub

   ' Removes an entry in the specified index from the collection.
   Overloads Public Sub Remove(index As Integer)
      Me.BaseRemoveAt(index)
   End Sub

End Class


Public Class SamplesNameObjectCollectionBase   

   Public Shared Sub Main()

      ' Creates and initializes a new MyCollection instance.
      Dim d = New ListDictionary()
      d.Add("red", "apple")
      d.Add("yellow", "banana")
      d.Add("green", "pear")
      Dim myCol As New MyCollection(d)
      Console.WriteLine("Initial state of the collection (Count = {0}):", myCol.Count)
      PrintKeysAndValues(myCol)

      ' Removes an element at a specific index.
      myCol.Remove(1)
      Console.WriteLine("After removing the element at index 1 (Count = {0}):", myCol.Count)
      PrintKeysAndValues(myCol)

      ' Removes an element with a specific key.
      myCol.Remove("red")
      Console.WriteLine("After removing the element with the key ""red"" (Count = {0}):", myCol.Count)
      PrintKeysAndValues(myCol)

   End Sub

   Public Shared Sub PrintKeysAndValues(myCol As MyCollection)
      Dim i As Integer
      For i = 0 To myCol.Count - 1
         Console.WriteLine("[{0}] : {1}, {2}", i, myCol(i).Key, myCol(i).Value)
      Next i
   End Sub

End Class


'This code produces the following output.
'
'Initial state of the collection (Count = 3):
'[0] : red, apple
'[1] : yellow, banana
'[2] : green, pear
'After removing the element at index 1 (Count = 2):
'[0] : red, apple
'[1] : green, pear
'After removing the element with the key "red" (Count = 1):
'[0] : green, pear

注釈

リストなどの連続する要素のコレクションでは、空白になった位置を埋めるために、削除された要素の後にある要素の位置が繰り上げられます。 コレクションにインデックスがある場合、移動した要素のインデックスも更新されます。 この動作は、要素が概念的にバケットにグループ化されているハッシュ テーブルなどのコレクションには適用されません。

このメソッドは O(n) 操作です。nCount です。

適用対象