次の方法で共有


ReadOnlyCollectionBase.InnerList プロパティ

ReadOnlyCollectionBase インスタンスに格納されている要素のリストを取得します。

Protected ReadOnly Property InnerList As ArrayList
[C#]
protected ArrayList InnerList {get;}
[C++]
protected: __property ArrayList* get_InnerList();
[JScript]
protected function get InnerList() : ArrayList;

プロパティ値

ReadOnlyCollectionBase インスタンス自体を表す ArrayList

解説

実装時の注意:

このクラスは、基になるコレクションを InnerList プロパティを通じて利用できるようにします。これは、 ReadOnlyCollectionBase から直接派生したクラスによる使用だけを想定したものです。派生したクラスでは、それ自体のユーザーが基になるコレクションを変更できないことを保証する必要があります。

使用例

[Visual Basic, C#, C++] ReadOnlyCollectionBase クラスを実装するコード例を次に示します。

 
Imports System
Imports System.Collections

Public Class ROCollection
   Inherits ReadOnlyCollectionBase

   Public Sub New(sourceList As IList)
      InnerList.AddRange(sourceList)
   End Sub 'New

   Default Public ReadOnly Property Item(index As Integer) As [Object]
      Get
         Return InnerList(index)
      End Get
   End Property

   Public Function IndexOf(value As [Object]) As Integer
      Return InnerList.IndexOf(value)
   End Function 'IndexOf

   Public Function Contains(value As [Object]) As Boolean
      Return InnerList.Contains(value)
   End Function 'Contains

End Class 'ROCollection 


Public Class SamplesCollectionBase

   Public Shared Sub Main()

      ' Create an ArrayList.
      Dim myAL As New ArrayList()
      myAL.Add("red")
      myAL.Add("blue")
      myAL.Add("yellow")
      myAL.Add("green")
      myAL.Add("orange")
      myAL.Add("purple")

      ' Create a new ROCollection that contains the elements in myAL.
      Dim myCol As New ROCollection(myAL)

      ' Display the contents of the collection using the enumerator.
      Console.WriteLine("Contents of the collection (using enumerator):")
      PrintIndexAndValues(myCol)

      ' Search the collection with Contains and IndexOf.
      Console.WriteLine("Contains yellow: {0}", myCol.Contains("yellow"))
      Console.WriteLine("orange is at index {0}.", myCol.IndexOf("orange"))
      Console.WriteLine()

      ' Display the contents of the collection using the Count property and the Item property.
      Console.WriteLine("Contents of the collection (using Count and Item):")
      PrintIndexAndValues2(myCol)

   End Sub 'Main

   Public Shared Sub PrintIndexAndValues(myCol As ROCollection)
      Dim i As Integer = 0
      Dim myEnumerator As System.Collections.IEnumerator = myCol.GetEnumerator()
      While myEnumerator.MoveNext()
         Console.WriteLine("   [{0}]:   {1}", i, myEnumerator.Current)
         i += 1
      End While
      Console.WriteLine()
   End Sub 'PrintIndexAndValues

   Public Shared Sub PrintIndexAndValues2(myCol As ROCollection)
      Dim i As Integer
      For i = 0 To myCol.Count - 1
         Console.WriteLine("   [{0}]:   {1}", i, myCol(i))
      Next i
      Console.WriteLine()
   End Sub 'PrintIndexAndValues2

End Class 'SamplesCollectionBase 


'This code produces the following output.
'
'Contents of the collection (using enumerator):
'   [0]:   red
'   [1]:   blue
'   [2]:   yellow
'   [3]:   green
'   [4]:   orange
'   [5]:   purple
'
'Contains yellow: True
'orange is at index 4.
'
'Contents of the collection (using Count and Item):
'   [0]:   red
'   [1]:   blue
'   [2]:   yellow
'   [3]:   green
'   [4]:   orange
'   [5]:   purple


[C#] 
using System;
using System.Collections;

public class ROCollection : ReadOnlyCollectionBase  {

   public ROCollection( IList sourceList )  {
      InnerList.AddRange( sourceList );
   }

   public Object this[ int index ]  {
      get  {
         return( InnerList[index] );
      }
   }

   public int IndexOf( Object value )  {
      return( InnerList.IndexOf( value ) );
   }

   public bool Contains( Object value )  {
      return( InnerList.Contains( value ) );
   }

}


public class SamplesCollectionBase  {

   public static void Main()  {

      // Create an ArrayList.
      ArrayList myAL = new ArrayList();
      myAL.Add( "red" );
      myAL.Add( "blue" );
      myAL.Add( "yellow" );
      myAL.Add( "green" );
      myAL.Add( "orange" );
      myAL.Add( "purple" );
 
      // Create a new ROCollection that contains the elements in myAL.
      ROCollection myCol = new ROCollection( myAL );

      // Display the contents of the collection using the enumerator.
      Console.WriteLine( "Contents of the collection (using enumerator):" );
      PrintIndexAndValues( myCol );

      // Search the collection with Contains and IndexOf.
      Console.WriteLine( "Contains yellow: {0}", myCol.Contains( "yellow" ) );
      Console.WriteLine( "orange is at index {0}.", myCol.IndexOf( "orange" ) );
      Console.WriteLine();

      // Display the contents of the collection using the Count property and the Item property.
      Console.WriteLine( "Contents of the collection (using Count and Item):" );
      PrintIndexAndValues2( myCol );

   }
 
   public static void PrintIndexAndValues( ROCollection myCol )  {
      int i = 0;
      System.Collections.IEnumerator myEnumerator = myCol.GetEnumerator();
      while ( myEnumerator.MoveNext() )
         Console.WriteLine( "   [{0}]:   {1}", i++, myEnumerator.Current );
      Console.WriteLine();
   }

   public static void PrintIndexAndValues2( ROCollection myCol )  {
      for ( int i = 0; i < myCol.Count; i++ )
         Console.WriteLine( "   [{0}]:   {1}", i, myCol[i] );
      Console.WriteLine();
   }

}


/* 
This code produces the following output.

Contents of the collection (using enumerator):
   [0]:   red
   [1]:   blue
   [2]:   yellow
   [3]:   green
   [4]:   orange
   [5]:   purple

Contains yellow: True
orange is at index 4.

Contents of the collection (using Count and Item):
   [0]:   red
   [1]:   blue
   [2]:   yellow
   [3]:   green
   [4]:   orange
   [5]:   purple

*/


[C++] 
#using <mscorlib.dll>
using namespace System;
using namespace System::Collections;

public __gc class ROCollection : public ReadOnlyCollectionBase  {

public:
    ROCollection( IList* sourceList )  {
        InnerList->AddRange( sourceList );
    }

public:
    __property Object* get_Item( int index )  {
        return( InnerList->Item[index] );
    }

public:
    int IndexOf( Object* value )  {
        return( InnerList->IndexOf( value ) );
    }

public:
    bool Contains( Object* value )  {
        return( InnerList->Contains( value ) );
    }

};

static void PrintIndexAndValues( ROCollection* myCol )  {
    int i = 0;
    System::Collections::IEnumerator* myEnumerator = myCol->GetEnumerator();
    while ( myEnumerator->MoveNext() )
        Console::WriteLine( S"   [{0}]:   {1}", __box(i++), myEnumerator->Current );
    Console::WriteLine();
}

static void PrintIndexAndValues2( ROCollection* myCol )  {
    for ( int i = 0; i < myCol->Count; i++ )
        Console::WriteLine( S"   [{0}]:   {1}", __box(i), myCol->Item[i] );
    Console::WriteLine();
}

int main()  {

    // Create an ArrayList.
    ArrayList* myAL = new ArrayList();
    myAL->Add( S"red" );
    myAL->Add( S"blue" );
    myAL->Add( S"yellow" );
    myAL->Add( S"green" );
    myAL->Add( S"orange" );
    myAL->Add( S"purple" );

    // Create a new ROCollection that contains the elements in myAL.
    ROCollection* myCol = new ROCollection( myAL );

    // Display the contents of the collection using the enumerator.
    Console::WriteLine( S"Contents of the collection (using enumerator):" );
    PrintIndexAndValues( myCol );

    // Search the collection with Contains and IndexOf.
    Console::WriteLine( S"Contains yellow: {0}", __box(myCol->Contains( S"yellow" )));
    Console::WriteLine( S"orange is at index {0}.", __box(myCol->IndexOf( S"orange" )));
    Console::WriteLine();

    // Display the contents of the collection using the Count property and the Item property.
    Console::WriteLine( S"Contents of the collection (using Count and Item):" );
    PrintIndexAndValues2( myCol );

}

/* 
This code produces the following output.

Contents of the collection (using enumerator):
   [0]:   red
   [1]:   blue
   [2]:   yellow
   [3]:   green
   [4]:   orange
   [5]:   purple

Contains yellow: True
orange is at index 4.

Contents of the collection (using Count and Item):
   [0]:   red
   [1]:   blue
   [2]:   yellow
   [3]:   green
   [4]:   orange
   [5]:   purple

*/

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

参照

ReadOnlyCollectionBase クラス | ReadOnlyCollectionBase メンバ | System.Collections 名前空間