SortedDictionary<TKey,TValue>.Item[TKey] 属性

定义

获取或设置与指定键关联的值。

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

要获取或设置的值的键。

属性值

TValue

与指定键关联的值。 如果未找到指定的键,则 get 操作将引发一个 KeyNotFoundException,并且设置操作会创建具有指定键的新元素。

实现

例外

keynull

该属性已检索, key 集合中不存在。

示例

下面的代码示例使用 Item[] 属性(C# 中的索引器)检索值,演示请求的键不存在时引发的值 KeyNotFoundException ,并显示可以替换与键关联的值。

该示例还演示如何将 TryGetValue 该方法用作检索值的更高效方法(如果程序经常必须尝试不在字典中的键值)。

该代码示例是 SortedDictionary<TKey,TValue> 类中的一个较大示例的一部分。

// 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 dictionary.
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 dictionary.
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 dictionary, 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 dictionary, 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

注解

此属性提供使用以下 C# 语法访问集合中的特定元素的功能:myCollection[key] (Visual Basic 中的 myCollection(key))。

还可以通过使用属性 Item[] 来添加新元素,方法是设置不存在的 SortedDictionary<TKey,TValue>键的值;例如 myCollection["myNonexistentKey"] = myValue。 但是,如果指定的键已存在于该属性中 SortedDictionary<TKey,TValue>,则设置该 Item[] 属性将覆盖旧值。 相反,该方法 Add 不会修改现有元素。

如果值类型是引用类型null,则键不能TValue,但值可以是。

C# 语言 使用此关键字来 定义索引器,而不是实现 Item[] 属性。 Visual Basic 实现 Item[] 为默认属性,该属性提供相同的索引功能。

获取此属性的值是 O(log n) 操作;设置属性也是 O(log n) 操作。

适用于

另请参阅