SortedList<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 该方法用作检索值的更高效方法,如果程序经常必须尝试不在排序列表中的键值。

该代码示例是 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)。

适用于

另请参阅