SortedList<TKey,TValue>.Item[TKey] プロパティ

定義

指定されたキーに関連付けられている値を取得または設定します。Gets or sets the value associated with the specified key.

public:
 property TValue default[TKey] { TValue get(TKey key); void set(TKey key, TValue value); };
public TValue this[TKey key] { get; set; }
member this.Item('Key) : 'Value with get, set
Default Public Property Item(key As TKey) As TValue

パラメーター

key
TKey

値を取得または設定する対象のキー。The key whose value to get or set.

プロパティ値

TValue

指定されたキーに関連付けられている値。The value associated with the specified key. 指定したキーが見つからなかった場合、get 操作は KeyNotFoundException をスローし、set 操作は指定したキーを使用して新しい要素を作成します。If the specified key is not found, a get operation throws a KeyNotFoundException and a set operation creates a new element using the specified key.

実装

例外

keynullです。key is null.

プロパティが取得されましたが、コレクション内に key が存在しません。The property is retrieved and key does not exist in the collection.

次のコード例ではItem[TKey] 、プロパティ (のC#インデクサー) を使用して値を取得KeyNotFoundExceptionします。これは、要求されたキーが存在しない場合にがスローされ、キーに関連付けられている値を置き換えることができることを示しています。The following code example uses the Item[TKey] property (the indexer in C#) to retrieve values, demonstrating that a KeyNotFoundException is thrown when a requested key is not present, and showing that the value associated with a key can be replaced.

また、この例では、プログラムTryGetValueが並べ替えられたリストに含まれていないキー値を試す必要がある場合に、より効率的に値を取得する方法として、メソッドを使用する方法も示しています。The example also shows how to use the TryGetValue method as a more efficient way to retrieve values if a program often must try key values that are not in the sorted list.

このコード例は、 SortedList<TKey,TValue>クラスに対して提供される大規模な例の一部です。This code example is part of a larger example provided for the SortedList<TKey,TValue> class.

// The Item property is another name for the indexer, so you
// can omit its name when accessing elements.
Console::WriteLine("For key = \"rtf\", value = {0}.",
    openWith["rtf"]);

// The indexer can be used to change the value associated
// with a key.
openWith["rtf"] = "winword.exe";
Console::WriteLine("For key = \"rtf\", value = {0}.",
    openWith["rtf"]);

// If a key does not exist, setting the indexer for that key
// adds a new key/value pair.
openWith["doc"] = "winword.exe";
// The Item property is another name for the indexer, so you 
// can omit its name when accessing elements. 
Console.WriteLine("For key = \"rtf\", value = {0}.", 
    openWith["rtf"]);

// The indexer can be used to change the value associated
// with a key.
openWith["rtf"] = "winword.exe";
Console.WriteLine("For key = \"rtf\", value = {0}.", 
    openWith["rtf"]);

// If a key does not exist, setting the indexer for that key
// adds a new key/value pair.
openWith["doc"] = "winword.exe";
' The Item property is the default property, so you 
' can omit its name when accessing elements. 
Console.WriteLine("For key = ""rtf"", value = {0}.", _
    openWith("rtf"))

' The default Item property can be used to change the value
' associated with a key.
openWith("rtf") = "winword.exe"
Console.WriteLine("For key = ""rtf"", value = {0}.", _
    openWith("rtf"))

' If a key does not exist, setting the default Item property
' for that key adds a new key/value pair.
openWith("doc") = "winword.exe"
// The indexer throws an exception if the requested key is
// not in the list.
try
{
    Console::WriteLine("For key = \"tif\", value = {0}.",
        openWith["tif"]);
}
catch (KeyNotFoundException^)
{
    Console::WriteLine("Key = \"tif\" is not found.");
}
// The indexer throws an exception if the requested key is
// not in the list.
try
{
    Console.WriteLine("For key = \"tif\", value = {0}.", 
        openWith["tif"]);
}
catch (KeyNotFoundException)
{
    Console.WriteLine("Key = \"tif\" is not found.");
}
' The default Item property throws an exception if the requested
' key is not in the list.
Try
    Console.WriteLine("For key = ""tif"", value = {0}.", _
        openWith("tif"))
Catch 
    Console.WriteLine("Key = ""tif"" is not found.")
End Try
// When a program often has to try keys that turn out not to
// be in the list, TryGetValue can be a more efficient
// way to retrieve values.
String^ value = "";
if (openWith->TryGetValue("tif", value))
{
    Console::WriteLine("For key = \"tif\", value = {0}.", value);
}
else
{
    Console::WriteLine("Key = \"tif\" is not found.");
}
// When a program often has to try keys that turn out not to
// be in the list, TryGetValue can be a more efficient 
// way to retrieve values.
string value = "";
if (openWith.TryGetValue("tif", out value))
{
    Console.WriteLine("For key = \"tif\", value = {0}.", value);
}
else
{
    Console.WriteLine("Key = \"tif\" is not found.");
}
' When a program often has to try keys that turn out not to
' be in the list, TryGetValue can be a more efficient 
' way to retrieve values.
Dim value As String = ""
If openWith.TryGetValue("tif", value) Then
    Console.WriteLine("For key = ""tif"", value = {0}.", value)
Else
    Console.WriteLine("Key = ""tif"" is not found.")
End If

注釈

このプロパティでは、myCollection[key] という構文を使用して、コレクション内の特定の要素にアクセスできます。This property provides the ability to access a specific element in the collection by using the following syntax: myCollection[key].

キーをにするnullことはできませんが、 TValueリスト内の値の型が参照型である場合は、値をにすることができます。A key cannot be null, but a value can be, if the type of values in the list, TValue, is a reference type.

値の取得中にキーが見つからなかった場合は、 KeyNotFoundExceptionがスローされます。If the key is not found when a value is being retrieved, KeyNotFoundException is thrown. 値が設定されているときにキーが見つからない場合は、キーと値が追加されます。If the key is not found when a value is being set, the key and value are added.

また、 Item[TKey]プロパティを使用して、 SortedList<TKey,TValue>に存在しないキーの値 (など) myCollection["myNonexistentKey"] = myValueを設定することによって、新しい要素を追加することもできます。You can also use the Item[TKey] property to add new elements by setting the value of a key that does not exist in the SortedList<TKey,TValue>; for example, myCollection["myNonexistentKey"] = myValue. ただし、指定したキーがに既にSortedList<TKey,TValue>存在する場合Item[TKey]は、プロパティを設定すると古い値が上書きされます。However, if the specified key already exists in the SortedList<TKey,TValue>, setting the Item[TKey] property overwrites the old value. これに対してAdd 、メソッドは既存の要素を変更しません。In contrast, the Add method does not modify existing elements.

このC#言語ではthisItem[TKey]プロパティを実装する代わりに、キーワードを使用してインデクサーを定義します。The C# language uses the this keyword to define the indexers instead of implementing the Item[TKey] property. Visual Basic は、Item[TKey] を既定のプロパティとして実装しており、同様のインデックス機能を提供します。Visual Basic implements Item[TKey] as a default property, which provides the same indexing functionality.

このプロパティの値の取得は O (log n) 操作です。ここで、n はCountです。Retrieving the value of this property is an O(log n) operation, where n is Count. キーが既にn SortedList<TKey,TValue>に存在する場合、プロパティの設定は O (log) 操作になります。Setting the property is an O(log n) operation if the key is already in the SortedList<TKey,TValue>. キーが一覧にない場合、プロパティの設定は、並べ替えられてnいないデータの場合は o () 操作n、リストの末尾に新しい要素が追加された場合は o (log) になります。If the key is not in the list, setting the property is an O(n) operation for unsorted data, or O(log n) if the new element is added at the end of the list. 挿入によってサイズ変更が発生した場合n、操作は O () になります。If insertion causes a resize, the operation is O(n).

適用対象

こちらもご覧ください