SortedDictionary<TKey,TValue>.Item[TKey] 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取或设置与指定的键关联的值。
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
要获取或设置的值的键。
属性值
与指定的键相关联的值。 如果找不到指定的键,get 操作便会引发 KeyNotFoundException,而 set 操作会创建一个具有指定键的新元素。
实现
例外
key
为 null
。
已检索该属性且集合中不存在 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# 语言使用此关键字 (keyword) 来定义索引器,而不是实现 Item[] 属性。 Visual Basic 将 Item[] 实现为默认属性,该属性提供相同的索引功能。
获取此属性的值是 O (日志 n
) 操作;设置属性也是 O (日志 n
) 操作。