StringCollection クラス
アセンブリ: System (system.dll 内)
構文
StringCollection は、null 参照 (Visual Basic では Nothing) を有効な値として受け取り、要素の重複を許可します。
このコレクション内の要素は、整数インデックスを使用してアクセスできます。このコレクションのインデックスは 0 から始まります。
StringCollection のプロパティとメソッドのいくつかの例を次に示します。
Imports System Imports System.Collections Imports System.Collections.Specialized Public Class SamplesStringCollection Public Shared Sub Main() ' Create and initializes a new StringCollection. Dim myCol As New StringCollection() ' Add a range of elements from an array to the end of the StringCollection. Dim myArr() As String = {"RED", "orange", "yellow", "RED", "green", "blue", "RED", "indigo", "violet", "RED"} myCol.AddRange(myArr) ' Display the contents of the collection using foreach. This is the preferred method. Console.WriteLine("Displays the elements using foreach:") PrintValues1(myCol) ' Display the contents of the collection using the enumerator. Console.WriteLine("Displays the elements using the IEnumerator:") PrintValues2(myCol) ' Display the contents of the collection using the Count and Item properties. Console.WriteLine("Displays the elements using the Count and Item properties:") PrintValues3(myCol) ' Add one element to the end of the StringCollection and insert another at index 3. myCol.Add("* white") myCol.Insert(3, "* gray") Console.WriteLine("After adding ""* white"" to the end and inserting ""* gray"" at index 3:") PrintValues1(myCol) ' Remove one element from the StringCollection. myCol.Remove("yellow") Console.WriteLine("After removing ""yellow"":") PrintValues1(myCol) ' Remove all occurrences of a value from the StringCollection. Dim i As Integer = myCol.IndexOf("RED") While i > - 1 myCol.RemoveAt(i) i = myCol.IndexOf("RED") End While ' Verify that all occurrences of "RED" are gone. If myCol.Contains("RED") Then Console.WriteLine("*** The collection still contains ""RED"".") End If Console.WriteLine("After removing all occurrences of ""RED"":") PrintValues1(myCol) ' Copy the collection to a new array starting at index 0. Dim myArr2(myCol.Count) As String myCol.CopyTo(myArr2, 0) Console.WriteLine("The new array contains:") For i = 0 To myArr2.Length - 1 Console.WriteLine(" [{0}] {1}", i, myArr2(i)) Next i Console.WriteLine() ' Clears the entire collection. myCol.Clear() Console.WriteLine("After clearing the collection:") PrintValues1(myCol) End Sub 'Main ' Uses the foreach statement which hides the complexity of the enumerator. ' NOTE: The foreach statement is the preferred way of enumerating the contents of a collection. Public Shared Sub PrintValues1(myCol As StringCollection) Dim obj As [Object] For Each obj In myCol Console.WriteLine(" {0}", obj) Next obj Console.WriteLine() End Sub 'PrintValues1 ' Uses the enumerator. ' NOTE: The foreach statement is the preferred way of enumerating the contents of a collection. Public Shared Sub PrintValues2(myCol As StringCollection) Dim myEnumerator As StringEnumerator = myCol.GetEnumerator() While myEnumerator.MoveNext() Console.WriteLine(" {0}", myEnumerator.Current) End While Console.WriteLine() End Sub 'PrintValues2 ' Uses the Count and Item properties. Public Shared Sub PrintValues3(myCol As StringCollection) Dim i As Integer For i = 0 To myCol.Count - 1 Console.WriteLine(" {0}", myCol(i)) Next i Console.WriteLine() End Sub 'PrintValues3 End Class 'SamplesStringCollection 'This code produces the following output. ' 'Displays the elements using foreach: ' RED ' orange ' yellow ' RED ' green ' blue ' RED ' indigo ' violet ' RED ' 'Displays the elements using the IEnumerator: ' RED ' orange ' yellow ' RED ' green ' blue ' RED ' indigo ' violet ' RED ' 'Displays the elements using the Count and Item properties: ' RED ' orange ' yellow ' RED ' green ' blue ' RED ' indigo ' violet ' RED ' 'After adding "* white" to the end and inserting "* gray" at index 3: ' RED ' orange ' yellow ' * gray ' RED ' green ' blue ' RED ' indigo ' violet ' RED ' * white ' 'After removing "yellow": ' RED ' orange ' * gray ' RED ' green ' blue ' RED ' indigo ' violet ' RED ' * white ' 'After removing all occurrences of "RED": ' orange ' * gray ' green ' blue ' indigo ' violet ' * white ' 'The new array contains: ' [0] orange ' [1] * gray ' [2] green ' [3] blue ' [4] indigo ' [5] violet ' [6] * white ' 'After clearing the collection: '
using System; using System.Collections; using System.Collections.Specialized; public class SamplesStringCollection { public static void Main() { // Create and initializes a new StringCollection. StringCollection myCol = new StringCollection(); // Add a range of elements from an array to the end of the StringCollection. String[] myArr = new String[] { "RED", "orange", "yellow", "RED", "green", "blue", "RED", "indigo", "violet", "RED" }; myCol.AddRange( myArr ); // Display the contents of the collection using foreach. This is the preferred method. Console.WriteLine( "Displays the elements using foreach:" ); PrintValues1( myCol ); // Display the contents of the collection using the enumerator. Console.WriteLine( "Displays the elements using the IEnumerator:" ); PrintValues2( myCol ); // Display the contents of the collection using the Count and Item properties. Console.WriteLine( "Displays the elements using the Count and Item properties:" ); PrintValues3( myCol ); // Add one element to the end of the StringCollection and insert another at index 3. myCol.Add( "* white" ); myCol.Insert( 3, "* gray" ); Console.WriteLine( "After adding \"* white\" to the end and inserting \"* gray\" at index 3:" ); PrintValues1( myCol ); // Remove one element from the StringCollection. myCol.Remove( "yellow" ); Console.WriteLine( "After removing \"yellow\":" ); PrintValues1( myCol ); // Remove all occurrences of a value from the StringCollection. int i = myCol.IndexOf( "RED" ); while ( i > -1 ) { myCol.RemoveAt( i ); i = myCol.IndexOf( "RED" ); } // Verify that all occurrences of "RED" are gone. if ( myCol.Contains( "RED" ) ) Console.WriteLine( "*** The collection still contains \"RED\"." ); Console.WriteLine( "After removing all occurrences of \"RED\":" ); PrintValues1( myCol ); // Copy the collection to a new array starting at index 0. String[] myArr2 = new String[myCol.Count]; myCol.CopyTo( myArr2, 0 ); Console.WriteLine( "The new array contains:" ); for ( i = 0; i < myArr2.Length; i++ ) { Console.WriteLine( " [{0}] {1}", i, myArr2[i] ); } Console.WriteLine(); // Clears the entire collection. myCol.Clear(); Console.WriteLine( "After clearing the collection:" ); PrintValues1( myCol ); } // Uses the foreach statement which hides the complexity of the enumerator. // NOTE: The foreach statement is the preferred way of enumerating the contents of a collection. public static void PrintValues1( StringCollection myCol ) { foreach ( Object obj in myCol ) Console.WriteLine( " {0}", obj ); Console.WriteLine(); } // Uses the enumerator. // NOTE: The foreach statement is the preferred way of enumerating the contents of a collection. public static void PrintValues2( StringCollection myCol ) { StringEnumerator myEnumerator = myCol.GetEnumerator(); while ( myEnumerator.MoveNext() ) Console.WriteLine( " {0}", myEnumerator.Current ); Console.WriteLine(); } // Uses the Count and Item properties. public static void PrintValues3( StringCollection myCol ) { for ( int i = 0; i < myCol.Count; i++ ) Console.WriteLine( " {0}", myCol[i] ); Console.WriteLine(); } } /* This code produces the following output. Displays the elements using foreach: RED orange yellow RED green blue RED indigo violet RED Displays the elements using the IEnumerator: RED orange yellow RED green blue RED indigo violet RED Displays the elements using the Count and Item properties: RED orange yellow RED green blue RED indigo violet RED After adding "* white" to the end and inserting "* gray" at index 3: RED orange yellow * gray RED green blue RED indigo violet RED * white After removing "yellow": RED orange * gray RED green blue RED indigo violet RED * white After removing all occurrences of "RED": orange * gray green blue indigo violet * white The new array contains: [0] orange [1] * gray [2] green [3] blue [4] indigo [5] violet [6] * white After clearing the collection: */
#using <System.dll> using namespace System; using namespace System::Collections; using namespace System::Collections::Specialized; void PrintValues1( StringCollection^ myCol ); void PrintValues2( StringCollection^ myCol ); void PrintValues3( StringCollection^ myCol ); int main() { // Create and initializes a new StringCollection. StringCollection^ myCol = gcnew StringCollection; // Add a range of elements from an array to the end of the StringCollection. array<String^>^myArr = {"RED","orange","yellow" ,"RED","green","blue","RED","indigo" ,"violet","RED"}; myCol->AddRange( myArr ); // Display the contents of the collection using for each. This is the preferred method. Console::WriteLine( "Displays the elements using for each:" ); PrintValues1( myCol ); // Display the contents of the collection using the enumerator. Console::WriteLine( "Displays the elements using the IEnumerator:" ); PrintValues2( myCol ); // Display the contents of the collection using the Count and Item properties. Console::WriteLine( "Displays the elements using the Count and Item properties:" ); PrintValues3( myCol ); // Add one element to the end of the StringCollection and insert another at index 3. myCol->Add( "* white" ); myCol->Insert( 3, "* gray" ); Console::WriteLine( "After adding \"* white\" to the end and inserting \"* gray\" at index 3:" ); PrintValues1( myCol ); // Remove one element from the StringCollection. myCol->Remove( "yellow" ); Console::WriteLine( "After removing \"yellow\":" ); PrintValues1( myCol ); // Remove all occurrences of a value from the StringCollection. int i = myCol->IndexOf( "RED" ); while ( i > -1 ) { myCol->RemoveAt( i ); i = myCol->IndexOf( "RED" ); } // Verify that all occurrences of "RED" are gone. if ( myCol->Contains( "RED" ) ) Console::WriteLine( "*** The collection still contains \"RED\"." ); Console::WriteLine( "After removing all occurrences of \"RED\":" ); PrintValues1( myCol ); // Copy the collection to a new array starting at index 0. array<String^>^myArr2 = gcnew array<String^>(myCol->Count); myCol->CopyTo( myArr2, 0 ); Console::WriteLine( "The new array contains:" ); for ( i = 0; i < myArr2->Length; i++ ) { Console::WriteLine( " [{0}] {1}", i, myArr2[ i ] ); } Console::WriteLine(); // Clears the entire collection. myCol->Clear(); Console::WriteLine( "After clearing the collection:" ); PrintValues1( myCol ); } // Uses the for each statement which hides the complexity of the enumerator. // NOTE: The for each statement is the preferred way of enumerating the contents of a collection. void PrintValues1( StringCollection^ myCol ) { for each ( Object^ obj in myCol ) Console::WriteLine( " {0}", obj ); Console::WriteLine(); } // Uses the enumerator. void PrintValues2( StringCollection^ myCol ) { StringEnumerator^ myEnumerator = myCol->GetEnumerator(); while ( myEnumerator->MoveNext() ) Console::WriteLine( " {0}", myEnumerator->Current ); Console::WriteLine(); } // Uses the Count and Item properties. void PrintValues3( StringCollection^ myCol ) { for ( int i = 0; i < myCol->Count; i++ ) Console::WriteLine( " {0}", myCol[ i ] ); Console::WriteLine(); } /* This code produces the following output. Displays the elements using the IEnumerator: RED orange yellow RED green blue RED indigo violet RED Displays the elements using the Count and Item properties: RED orange yellow RED green blue RED indigo violet RED After adding "* white" to the end and inserting "* gray" at index 3: RED orange yellow * gray RED green blue RED indigo violet RED * white After removing "yellow": RED orange * gray RED green blue RED indigo violet RED * white After removing all occurrences of "RED": orange * gray green blue indigo violet * white The new array contains: [0] orange [1] * gray [2] green [3] blue [4] indigo [5] violet [6] * white After clearing the collection: */
import System.* ; import System.Collections.* ; import System.Collections.Specialized.* ; public class SamplesStringCollection { public static void main(String[] args) { // Create and initializes a new StringCollection. StringCollection myCol = new StringCollection(); // Add a range of elements from an array to the end of the // StringCollection. String myArr[] = new String[] { "RED", "orange", "yellow", "RED", "green", "blue", "RED", "indigo", "violet", "RED" }; myCol.AddRange(myArr); // Display the contents of the collection using foreach. This is the // preferred method. Console.WriteLine("Displays the elements using for:"); PrintValues1(myCol); // Display the contents of the collection using the enumerator. Console.WriteLine("Displays the elements using the IEnumerator:"); PrintValues2(myCol); // Display the contents of the collection using the Count and Item // properties. Console.WriteLine("Displays the elements using the Count and Item" + " properties:"); PrintValues3(myCol); // Add one element to the end of the StringCollection and insert // another at index 3. myCol.Add("* white"); myCol.Insert(3, "* gray"); Console.WriteLine("After adding \"* white\" to the end and inserting" + " \"* gray\" at index 3:"); PrintValues1(myCol); // Remove one element from the StringCollection. myCol.Remove("yellow"); Console.WriteLine("After removing \"yellow\":"); PrintValues1(myCol); // Remove all occurrences of a value from the StringCollection. int i = myCol.IndexOf("RED"); while (i > -1) { myCol.RemoveAt(i); i = myCol.IndexOf("RED"); } // Verify that all occurrences of "RED" are gone. if (myCol.Contains("RED")) { Console.WriteLine("*** The collection still contains \"RED\"."); } Console.WriteLine("After removing all occurrences of \"RED\":"); PrintValues1(myCol); // Copy the collection to a new array starting at index 0. String myArr2[] = new String[myCol.get_Count()]; myCol.CopyTo(myArr2, 0); Console.WriteLine("The new array contains:"); for (i = 0; i < myArr2.length; i++) { Console.WriteLine(" [{0}] {1}", System.Convert.ToString(i), myArr2.get_Item(i)); } Console.WriteLine(); // Clears the entire collection. myCol.Clear(); Console.WriteLine("After clearing the collection:"); PrintValues1(myCol); } //main public static void PrintValues1(StringCollection myCol) { Object obj = new Object(); for (int iCtr = 0; iCtr < myCol.get_Count(); iCtr++) { obj = myCol.get_Item(iCtr); Console.WriteLine(" {0}", obj); } Console.WriteLine(); } //PrintValues1 // Uses the enumerator. public static void PrintValues2(StringCollection myCol) { StringEnumerator myEnumerator = myCol.GetEnumerator(); while (myEnumerator.MoveNext()) { Console.WriteLine(" {0}", myEnumerator.get_Current()); } Console.WriteLine(); } //PrintValues2 // Uses the Count and Item properties. public static void PrintValues3(StringCollection myCol) { for (int i = 0; i < myCol.get_Count(); i++) { Console.WriteLine(" {0}", myCol.get_Item(i)); } Console.WriteLine(); } //PrintValues3 } //SamplesStringCollection /* This code produces the following output. Displays the elements using for: RED orange yellow RED green blue RED indigo violet RED Displays the elements using the IEnumerator: RED orange yellow RED green blue RED indigo violet RED Displays the elements using the Count and Item properties: RED orange yellow RED green blue RED indigo violet RED After adding "* white" to the end and inserting "* gray" at index 3: RED orange yellow * gray RED green blue RED indigo violet RED * white After removing "yellow": RED orange * gray RED green blue RED indigo violet RED * white After removing all occurrences of "RED": orange * gray green blue indigo violet * white The new array contains: [0] orange [1] * gray [2] green [3] blue [4] indigo [5] violet [6] * white After clearing the collection: */
System.Collections.Specialized.StringCollection
System.Configuration.CommaDelimitedStringCollection
この型の public static (Visual Basic では Shared) メンバは、スレッド セーフです。すべてのインスタンス メンバがスレッド セーフになるかどうかは保証されていません。
この実装は、StringCollection 用の同期された (スレッド セーフな) ラッパーは提供しませんが、派生クラスでは、SyncRoot プロパティを使用して、同期した StringCollection を独自に作成できます。
コレクションの列挙処理は、本質的にはスレッド セーフな処理ではありません。コレクションが同期されている場合でも、他のスレッドがそのコレクションを変更する可能性はあり、そのような状況が発生すると列挙子は例外をスローします。列挙処理を確実にスレッド セーフに行うには、列挙中にコレクションをロックするか、他のスレッドによって行われた変更によってスローされる例外をキャッチします。
Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
参照
- StringCollection クラスのページへのリンク