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,而 set 操作会创建一个使用指定键的新元素。

实现

例外

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 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]

键不能 null,但值可以是,如果列表中的值类型, TValue则为引用类型。

如果在检索值时找不到键, KeyNotFoundException 则会引发。 如果在设置值时找不到密钥,则会添加键和值。

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

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

检索此属性的值是 O (日志 n) 操作,其中 n Count。 如果键已在SortedList<TKey,TValue>中,则设置此属性是 O (日志n) 操作。 如果键不在列表中,则设置该属性是未排序数据的 O (n) 操作,或者如果新元素在列表末尾添加新元素,则 O (日志 n) 。 如果插入导致调整大小,则操作为 O (n) 。

适用于

另请参阅