NameValueCollection クラス

定義

String キーと、このキーまたはインデックスを使用してアクセスできる String 値が関連付けられたコレクションを表します。

public ref class NameValueCollection : System::Collections::Specialized::NameObjectCollectionBase
public class NameValueCollection : System.Collections.Specialized.NameObjectCollectionBase
[System.Serializable]
public class NameValueCollection : System.Collections.Specialized.NameObjectCollectionBase
type NameValueCollection = class
    inherit NameObjectCollectionBase
[<System.Serializable>]
type NameValueCollection = class
    inherit NameObjectCollectionBase
Public Class NameValueCollection
Inherits NameObjectCollectionBase
継承
NameValueCollection
派生
属性

#using <System.dll>

using namespace System;
using namespace System::Collections;
using namespace System::Collections::Specialized;

void PrintKeysAndValues( NameValueCollection^ myCol );
void PrintKeysAndValues2( NameValueCollection^ myCol );

int main()
{
   // Creates and initializes a new NameValueCollection.
   NameValueCollection^ myCol = gcnew NameValueCollection;
   myCol->Add( "red", "rojo" );
   myCol->Add( "green", "verde" );
   myCol->Add( "blue", "azul" );
   myCol->Add( "red", "rouge" );

   // Displays the values in the NameValueCollection in two different ways.
   Console::WriteLine( "Displays the elements using the AllKeys property and the Item (indexer) property:" );
   PrintKeysAndValues( myCol );
   Console::WriteLine( "Displays the elements using GetKey and Get:" );
   PrintKeysAndValues2( myCol );

   // Gets a value either by index or by key.
   Console::WriteLine( "Index 1 contains the value {0}.", myCol[ 1 ] );
   Console::WriteLine( "Key \"red\" has the value {0}.", myCol[ "red" ] );
   Console::WriteLine();

   // Copies the values to a string array and displays the string array.
   array<String^>^myStrArr = gcnew array<String^>(myCol->Count);
   myCol->CopyTo( myStrArr, 0 );
   Console::WriteLine( "The string array contains:" );
   for each ( String^ s in myStrArr )
      Console::WriteLine( "   {0}", s );
   Console::WriteLine();

   // Searches for a key and deletes it.
   myCol->Remove( "green" );
   Console::WriteLine( "The collection contains the following elements after removing \"green\":" );
   PrintKeysAndValues( myCol );

   // Clears the entire collection.
   myCol->Clear();
   Console::WriteLine( "The collection contains the following elements after it is cleared:" );
   PrintKeysAndValues( myCol );
}

void PrintKeysAndValues( NameValueCollection^ myCol )
{
   Console::WriteLine( "   KEY        VALUE" );
   for each ( String^ s in myCol->AllKeys )
      Console::WriteLine( "   {0,-10} {1}", s, myCol[s] );
   Console::WriteLine();
}

void PrintKeysAndValues2( NameValueCollection^ myCol )
{
   Console::WriteLine( "   [INDEX] KEY        VALUE" );
   for ( int i = 0; i < myCol->Count; i++ )
      Console::WriteLine( "   [{0}]     {1,-10} {2}", i, myCol->GetKey( i ), myCol->Get( i ) );
   Console::WriteLine();
}

/*

This code produces the following output.

Displays the elements using the AllKeys property and the Item (indexer) property:
   KEY        VALUE
   red        rojo,rouge
   green      verde
   blue       azul

Displays the elements using GetKey and Get:
   [INDEX] KEY        VALUE
   [0]     red        rojo,rouge
   [1]     green      verde
   [2]     blue       azul

Index 1 contains the value verde.
Key "red" has the value rojo,rouge.

The string array contains:
   rojo,rouge
   verde
   azul

The collection contains the following elements after removing "green":
   KEY        VALUE
   red        rojo,rouge
   blue       azul

The collection contains the following elements after it is cleared:
   KEY        VALUE


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

public class SamplesNameValueCollection  {

   public static void Main()  {

      // Creates and initializes a new NameValueCollection.
      NameValueCollection myCol = new NameValueCollection();
      myCol.Add( "red", "rojo" );
      myCol.Add( "green", "verde" );
      myCol.Add( "blue", "azul" );
      myCol.Add( "red", "rouge" );

      // Displays the values in the NameValueCollection in two different ways.
      Console.WriteLine( "Displays the elements using the AllKeys property and the Item (indexer) property:" );
      PrintKeysAndValues( myCol );
      Console.WriteLine( "Displays the elements using GetKey and Get:" );
      PrintKeysAndValues2( myCol );

      // Gets a value either by index or by key.
      Console.WriteLine( "Index 1 contains the value {0}.", myCol[1] );
      Console.WriteLine( "Key \"red\" has the value {0}.", myCol["red"] );
      Console.WriteLine();

      // Copies the values to a string array and displays the string array.
      String[] myStrArr = new String[myCol.Count];
      myCol.CopyTo( myStrArr, 0 );
      Console.WriteLine( "The string array contains:" );
      foreach ( String s in myStrArr )
         Console.WriteLine( "   {0}", s );
      Console.WriteLine();

      // Searches for a key and deletes it.
      myCol.Remove( "green" );
      Console.WriteLine( "The collection contains the following elements after removing \"green\":" );
      PrintKeysAndValues( myCol );

      // Clears the entire collection.
      myCol.Clear();
      Console.WriteLine( "The collection contains the following elements after it is cleared:" );
      PrintKeysAndValues( myCol );
   }

   public static void PrintKeysAndValues( NameValueCollection myCol )  {
      Console.WriteLine( "   KEY        VALUE" );
      foreach ( String s in myCol.AllKeys )
         Console.WriteLine( "   {0,-10} {1}", s, myCol[s] );
      Console.WriteLine();
   }

   public static void PrintKeysAndValues2( NameValueCollection myCol )  {
      Console.WriteLine( "   [INDEX] KEY        VALUE" );
      for ( int i = 0; i < myCol.Count; i++ )
         Console.WriteLine( "   [{0}]     {1,-10} {2}", i, myCol.GetKey(i), myCol.Get(i) );
      Console.WriteLine();
   }
}

/*

This code produces the following output.

Displays the elements using the AllKeys property and the Item (indexer) property:
   KEY        VALUE
   red        rojo,rouge
   green      verde
   blue       azul

Displays the elements using GetKey and Get:
   [INDEX] KEY        VALUE
   [0]     red        rojo,rouge
   [1]     green      verde
   [2]     blue       azul

Index 1 contains the value verde.
Key "red" has the value rojo,rouge.

The string array contains:
   rojo,rouge
   verde
   azul

The collection contains the following elements after removing "green":
   KEY        VALUE
   red        rojo,rouge
   blue       azul

The collection contains the following elements after it is cleared:
   KEY        VALUE


*/
' The following code example demonstrates several of the properties and methods of ListDictionary.

Imports System.Collections
Imports System.Collections.Specialized


Public Class SamplesNameValueCollection

    Public Shared Sub Main()

        ' Creates and initializes a new NameValueCollection.
        Dim myCol As New NameValueCollection()
        myCol.Add("red", "rojo")
        myCol.Add("green", "verde")
        myCol.Add("blue", "azul")
        myCol.Add("red", "rouge")

        ' Displays the values in the NameValueCollection in two different ways.
        Console.WriteLine("Displays the elements using the AllKeys property and the Item (indexer) property:")
        PrintKeysAndValues(myCol)
        Console.WriteLine("Displays the elements using GetKey and Get:")
        PrintKeysAndValues2(myCol)

        ' Gets a value either by index or by key.
        Console.WriteLine("Index 1 contains the value {0}.", myCol(1))
        Console.WriteLine("Key ""red"" has the value {0}.", myCol("red"))
        Console.WriteLine()

        ' Copies the values to a string array and displays the string array.
        Dim myStrArr(myCol.Count) As String
        myCol.CopyTo(myStrArr, 0)
        Console.WriteLine("The string array contains:")
        Dim s As String
        For Each s In myStrArr
            Console.WriteLine("   {0}", s)
        Next s
        Console.WriteLine()

        ' Searches for a key and deletes it.
        myCol.Remove("green")
        Console.WriteLine("The collection contains the following elements after removing ""green"":")
        PrintKeysAndValues(myCol)

        ' Clears the entire collection.
        myCol.Clear()
        Console.WriteLine("The collection contains the following elements after it is cleared:")
        PrintKeysAndValues(myCol)

    End Sub

    Public Shared Sub PrintKeysAndValues(myCol As NameValueCollection)
        Console.WriteLine("   KEY        VALUE")
        Dim s As String
        For Each s In  myCol.AllKeys
            Console.WriteLine("   {0,-10} {1}", s, myCol(s))
        Next s
        Console.WriteLine()
    End Sub

    Public Shared Sub PrintKeysAndValues2(myCol As NameValueCollection)
        Console.WriteLine("   [INDEX] KEY        VALUE")
        Dim i As Integer
        For i = 0 To myCol.Count - 1
            Console.WriteLine("   [{0}]     {1,-10} {2}", i, myCol.GetKey(i), myCol.Get(i))
        Next i
        Console.WriteLine()
    End Sub

End Class


'This code produces the following output.
'
'Displays the elements using the AllKeys property and the Item (indexer) property:
'   KEY        VALUE
'   red        rojo,rouge
'   green      verde
'   blue       azul
'
'Displays the elements using GetKey and Get:
'   [INDEX] KEY        VALUE
'   [0]     red        rojo,rouge
'   [1]     green      verde
'   [2]     blue       azul
'
'Index 1 contains the value verde.
'Key "red" has the value rojo,rouge.
'
'The string array contains:
'   red
'   green
'   blue
'
'
'The collection contains the following elements after removing "green":
'   KEY        VALUE
'   red        rojo,rouge
'   blue       azul
'
'The collection contains the following elements after it is cleared:
'   KEY        VALUE
'
'

注釈

このコレクションはNameObjectCollectionBaseクラスに基づいています。 コレクションの各要素は、キーと値のペアです。 ただしNameObjectCollectionBaseとは異なり、このクラスは、1 つのキーの下に複数の文字列値を格納できます。

このクラスは、ヘッダー、クエリ文字列、およびフォームのデータに使用できます。

この型のコレクションは、要素の順序を保持せず、コレクションを列挙する場合、特定の順序は保証されません。

NameValueCollectionの容量は、NameValueCollectionが保持できる要素の数です。 要素が追加されると、その容量は、再割り当ての必要性に応じて自動的に増加します。

ハッシュ コード プロバイダーは、NameValueCollection内のキーにハッシュ コードを与えます。 既定のハッシュ コード プロバイダーは、CaseInsensitiveHashCodeProviderです。

比較演算子は、2 つのキーが等しいかどうかを判断します。 既定の比較子は、インバリアント カルチャの規則を使用するCaseInsensitiveComparerです; キーの比較は既定では大文字と小文字を区別しません。 大文字と小文字を区別してキーの比較を実行するには、NameValueCollection.NameValueCollection(IEqualityComparer)コンス トラクターを呼び出し、equalityComparer引数の値としてStringComparer.CurrentCultureStringComparer.InvariantCulture、またはStringComparer.Ordinalを指定します。 比較と並べ替えのカルチャのしくみの詳細については、次を参照してくださいカルチャを認識しない文字列操作を実行する

キーまたは値としてnullを許可します。

注意事項

Getメソッドは、指定したキーが見つからないために返されたnullと、キーに関連付けられている値がnullであるために返されたnullを区別しません。

コンストラクター

NameValueCollection()

空で、既定の初期量を備え、大文字と小文字を区別しない既定のハッシュ コード プロバイダーと大文字と小文字を区別しない既定の比較子を使用する、NameValueCollection クラスの新しいインスタンスを初期化します。

NameValueCollection(IEqualityComparer)

空で、既定の初期量を備え、指定した NameValueCollection オブジェクトを使用する、IEqualityComparer クラスの新しいインスタンスを初期化します。

NameValueCollection(IHashCodeProvider, IComparer)
古い.
古い.

空で、既定の初期量を備え、指定したハッシュ コード プロバイダーと指定した比較子を使用する、NameValueCollection クラスの新しいインスタンスを初期化します。

NameValueCollection(Int32)

空で、指定した初期量を備え、大文字と小文字を区別しない既定のハッシュ コード プロバイダーと大文字と小文字を区別しない既定の比較子を使用する、NameValueCollection クラスの新しいインスタンスを初期化します。

NameValueCollection(Int32, IEqualityComparer)

空で、指定した初期量を備え、指定した IEqualityComparer オブジェクトを使用する、NameValueCollection クラスの新しいインスタンスを初期化します。

NameValueCollection(Int32, IHashCodeProvider, IComparer)
古い.
古い.

空で、指定した初期量を備え、指定したハッシュ コード プロバイダーと指定した比較子を使用する、NameValueCollection クラスの新しいインスタンスを初期化します。

NameValueCollection(Int32, NameValueCollection)

指定した初期量またはコピーされるエントリの数と同じ初期量のうち値が大きい方の初期量を備え、大文字と小文字を区別しない既定のハッシュ コード プロバイダーおよび大文字と小文字を区別しない既定の比較子を使用する新しい NameValueCollection に、指定した NameValueCollection からエントリをコピーします。

NameValueCollection(NameValueCollection)

コピーされるエントリの数と同じ初期量を備え、ソース コレクションと同じハッシュ コード プロバイダーおよび比較子を使用する新しい NameValueCollection に、指定した NameValueCollection からエントリをコピーします。

NameValueCollection(SerializationInfo, StreamingContext)
古い.

シリアル化でき、指定した SerializationInfoStreamingContext を使用する、NameValueCollection クラスの新しいインスタンスを初期化します。

プロパティ

AllKeys

NameValueCollection 内のすべてのキーを取得します。

Count

NameObjectCollectionBase インスタンスに格納されているキーと値のペアの数を取得します。

(継承元 NameObjectCollectionBase)
IsReadOnly

NameObjectCollectionBase インスタンスが読み取り専用かどうかを示す値を取得または設定します。

(継承元 NameObjectCollectionBase)
Item[Int32]

NameValueCollection の指定したインデックスにあるエントリを取得します。

Item[String]

NameValueCollection 内の指定したキーを持つエントリを取得または設定します。

Keys

NameObjectCollectionBase.KeysCollection インスタンスのすべてのキーを含んでいる NameObjectCollectionBase インスタンスを取得します。

(継承元 NameObjectCollectionBase)

メソッド

Add(NameValueCollection)

現在の NameValueCollection に、指定した NameValueCollection 内のエントリをコピーします。

Add(String, String)

指定した名前および値を持つエントリを NameValueCollection に追加します。

BaseAdd(String, Object)

指定したキーと値を持つエントリを NameObjectCollectionBase インスタンスに追加します。

(継承元 NameObjectCollectionBase)
BaseClear()

NameObjectCollectionBase インスタンスからすべてのエントリを削除します。

(継承元 NameObjectCollectionBase)
BaseGet(Int32)

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

(継承元 NameObjectCollectionBase)
BaseGet(String)

NameObjectCollectionBase インスタンスから、指定したキーを持つ最初のエントリの値を取得します。

(継承元 NameObjectCollectionBase)
BaseGetAllKeys()

NameObjectCollectionBase インスタンス内のすべてのキーを格納する String 配列を返します。

(継承元 NameObjectCollectionBase)
BaseGetAllValues()

NameObjectCollectionBase インスタンス内のすべての値を格納する Object 配列を返します。

(継承元 NameObjectCollectionBase)
BaseGetAllValues(Type)

NameObjectCollectionBase インスタンス内のすべての値を格納する、指定した型の配列を返します。

(継承元 NameObjectCollectionBase)
BaseGetKey(Int32)

NameObjectCollectionBase インスタンスの指定したインデックスにあるエントリのキーを取得します。

(継承元 NameObjectCollectionBase)
BaseHasKeys()

NameObjectCollectionBase インスタンスが、キーが null ではないエントリを格納しているかどうかを示す値を取得します。

(継承元 NameObjectCollectionBase)
BaseRemove(String)

指定したキーを持つエントリを NameObjectCollectionBase インスタンスから削除します。

(継承元 NameObjectCollectionBase)
BaseRemoveAt(Int32)

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

(継承元 NameObjectCollectionBase)
BaseSet(Int32, Object)

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

(継承元 NameObjectCollectionBase)
BaseSet(String, Object)

NameObjectCollectionBase インスタンス内に指定したキーを持つエントリが存在する場合は、その最初のエントリの値を設定します。存在しない場合は、指定したキーと値を持つエントリを NameObjectCollectionBase インスタンスに追加します。

(継承元 NameObjectCollectionBase)
Clear()

キャッシュに保存された配列を無効化し、NameValueCollection からすべてのエントリを削除します。

CopyTo(Array, Int32)

NameValueCollection 全体を互換性のある 1 次元の Array にコピーします。コピー操作は、コピー先の配列の指定したインデックスから始まります。

Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
Get(Int32)

NameValueCollection の指定したインデックスの値をいくつか取得し、1 つのコンマ区切りリストに組み合わせます。

Get(String)

NameValueCollection から指定したキーに関連付けられた値を取得し、1 つのコンマ区切りのリストに組み合わせます。

GetEnumerator()

NameObjectCollectionBase を反復処理する列挙子を返します。

(継承元 NameObjectCollectionBase)
GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetKey(Int32)

NameValueCollection の指定したインデックスにあるキーを取得します。

GetObjectData(SerializationInfo, StreamingContext)
古い.

ISerializable インターフェイスを実装し、NameObjectCollectionBase インスタンスをシリアル化するために必要なデータを返します。

(継承元 NameObjectCollectionBase)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
GetValues(Int32)

NameValueCollection の指定したインデックスにある値を取得します。

GetValues(String)

指定したキーに関連付けられている値を NameValueCollection から取得します。

HasKeys()

NameValueCollectionnull 以外のキーを格納しているかどうかを示す値を取得します。

InvalidateCachedArrays()

コレクション内でキャッシュに保存された配列を null にリセットします。

MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
OnDeserialization(Object)

ISerializable インターフェイスを実装し、逆シリアル化が完了したときに逆シリアル化イベントを発生させます。

(継承元 NameObjectCollectionBase)
Remove(String)

指定したキーを持つエントリを NameObjectCollectionBase インスタンスから削除します。

Set(String, String)

NameValueCollection 内のエントリの値を設定します。

ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)

明示的なインターフェイスの実装

ICollection.CopyTo(Array, Int32)

NameObjectCollectionBase 全体を互換性のある 1 次元の Array にコピーします。コピー操作は、コピー先の配列の指定したインデックスから始まります。

(継承元 NameObjectCollectionBase)
ICollection.IsSynchronized

NameObjectCollectionBase オブジェクトへのアクセスが同期されている (スレッド セーフである) かどうかを示す値を取得します。

(継承元 NameObjectCollectionBase)
ICollection.SyncRoot

NameObjectCollectionBase オブジェクトへのアクセスを同期するために使用できるオブジェクトを取得します。

(継承元 NameObjectCollectionBase)

拡張メソッド

Cast<TResult>(IEnumerable)

IEnumerable の要素を、指定した型にキャストします。

OfType<TResult>(IEnumerable)

指定された型に基づいて IEnumerable の要素をフィルター処理します。

AsParallel(IEnumerable)

クエリの並列化を有効にします。

AsQueryable(IEnumerable)

IEnumerableIQueryable に変換します。

適用対象

スレッド セーフ

パブリック静的 (Visual Basic ではShared) なこの型のメンバーはスレッド セーフです インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

この実装は同期を行う (スレッド セーフな) NameValueCollectionのラッパーを提供しませんが、派生クラスは、NameValueCollectionの独自の同期バージョンを、NameObjectCollectionBaseクラスのSyncRootプロパティを使用して、作成できます。

コレクションの列挙は、本質的にスレッド セーフな手続きではありません。 コレクションが同期されていても、他のスレッドがコレクションを変更する場合があり、このときは列挙子から例外がスローされます。 列挙処理を確実にスレッド セーフに行うには、列挙中にコレクションをロックするか、他のスレッドによって行われた変更によってスローされる例外をキャッチします。

こちらもご覧ください