Прочитать на английском

Поделиться через


IDictionary<TKey,TValue>.Item[TKey] Свойство

Определение

Возвращает или задает элемент с указанным ключом.

public TValue this[TKey key] { get; set; }

Параметры

key
TKey

Ключ элемента, который требуется получить или задать.

Значение свойства

TValue

Элемент с указанным ключом.

Исключения

key имеет значение null.

Свойство получено и параметр key не найден.

Свойство задано, и список IDictionary<TKey,TValue> доступен только для чтения.

Примеры

В следующем примере кода используется Item[] свойство (индексатор в C#) для получения значений KeyNotFoundException , демонстрируя, что создается, если запрошенный ключ отсутствует, и показывая, что значение, связанное с ключом, можно заменить.

В примере также показано, как использовать TryGetValue метод в качестве более эффективного способа получения значений, если программе часто приходится пробовать ключевые значения, которых нет в словаре.

Этот код является частью более крупного примера, который можно компилировать и выполнять. См. раздел System.Collections.Generic.IDictionary<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 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.");
}
// 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.");
}

Комментарии

Это свойство предоставляет возможность доступа к определенному элементу в коллекции с помощью следующего синтаксиса: myCollection[key] (myCollection(key) в Visual Basic).

Свойство можно также использовать для Item[] добавления новых элементов, задав значение ключа, который не существует в словаре, например в myCollection["myNonexistentKey"] = myValue C# (myCollection("myNonexistentKey") = myValue в Visual Basic). Однако если указанный ключ уже существует в словаре, установка Item[] свойства перезаписывает старое значение. В отличие от этого, Add метод не изменяет существующие элементы.

Реализации могут зависеть от того, как они определяют равенство объектов; Например, List<T> класс использует Comparer<T>.Default, в то время как Dictionary<TKey,TValue> класс позволяет пользователю указать реализацию, используемую IComparer<T> для сравнения ключей.

Язык C# использует этот ключевое слово для определения индексаторов вместо реализации Item[] свойства . В языке Visual Basic в качестве свойства по умолчанию реализовано свойство Item[], предоставляющее те же возможности индексирования.

Реализации могут отличаться в зависимости от того, позволяют key ли они иметь значение null.

Применяется к

Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

См. также раздел