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 名前空間