SortedList<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 设置操作,并使用指定的键创建一个新元素。
实现
例外
key 是 null。
该属性已检索, key 集合中不存在。
示例
下面的代码示例使用 Item[] 属性(C# 中的索引器)检索值,演示请求的键不存在时引发的值 KeyNotFoundException ,并显示可以替换与键关联的值。
该示例还演示如何将 TryGetValue 该方法用作检索值的更高效方法,如果程序经常必须尝试不在排序列表中的键值。
该代码示例是 SortedList<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 Item property is another name for the indexer, so you
// can omit its name when accessing elements.
printfn $"""For key = "rtf", value = {openWith["rtf"]}."""
// The indexer can be used to change the value associated
// with a key.
openWith["rtf"] <- "winword.exe"
printfn $"""For key = "rtf", value = {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 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
// The indexer throws an exception if the requested key is
// not in the list.
try
printfn $"""For key = "tif", value = {openWith["tif"]}."""
with
| :? KeyNotFoundException ->
printfn "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
// 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.
match openWith.TryGetValue("tif") with
| true, value ->
printfn "For key = \"tif\", value = {value}."
| false, _ ->
printfn "Key = \"tif\" is not found."
注解
此属性提供使用以下语法访问集合中的特定元素的功能: myCollection[key]
键不能 null,但如果列表中的值类型是引用类型, TValue则值可以是值。
如果在检索值时找不到该键, KeyNotFoundException 则会引发。 如果在设置值时找不到密钥,则会添加键和值。
还可以通过使用属性 Item[] 来添加新元素,方法是设置不存在的 SortedList<TKey,TValue>键的值;例如 myCollection["myNonexistentKey"] = myValue。 但是,如果指定的键已存在于该属性中 SortedList<TKey,TValue>,则设置该 Item[] 属性将覆盖旧值。 相反,该方法 Add 不会修改现有元素。
C# 语言使用 this 关键字来定义索引器,而不是实现 Item[] 属性。 Visual Basic 实现 Item[] 为默认属性,该属性提供相同的索引功能。
检索此属性的值是 O(logn) 操作,其中 n。Count 如果键已位于 O(log)中SortedList<TKey,TValue>,则设置该属性为 O(logn) 操作。 如果键不在列表中,则为未排序的数据设置属性为 O(n)操作;如果新元素在列表末尾添加,则为 O(log n)。 如果插入导致调整大小,则操作为 O(n)。