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

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


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

Определение

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

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

Параметры

key
TKey

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

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

TValue

Значение, связанное с указанным ключом. Если указанный ключ не найден, операция получения создает исключение KeyNotFoundException, а операция задания значения создает новый элемент с указанным ключом.

Реализации

Исключения

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

Свойство получено, а key не существует в коллекции.

Примеры

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

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

Этот пример входит в состав более крупного примера использования класса Dictionary<TKey,TValue>. openWith — это имя словаря, используемого в этом примере.

// Create a new dictionary of strings, with string keys.
//
Dictionary<string, string> openWith =
    new Dictionary<string, string>();

// Add some elements to the dictionary. There are no
// duplicate keys, but some of the values are duplicates.
openWith.Add("txt", "notepad.exe");
openWith.Add("bmp", "paint.exe");
openWith.Add("dib", "paint.exe");
openWith.Add("rtf", "wordpad.exe");

// The Add method throws an exception if the new key is
// already in the dictionary.
try
{
    openWith.Add("txt", "winword.exe");
}
catch (ArgumentException)
{
    Console.WriteLine("An element with Key = \"txt\" already exists.");
}
// 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.");
}

Комментарии

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

Вы также можете использовать Item[] свойство для добавления новых элементов, задав значение ключа, не существующего Dictionary<TKey,TValue>в . При установке значения свойства, если ключ находится в Dictionary<TKey,TValue>, значение, связанное с этим ключом, заменяется назначенным значением. Если ключ отсутствует в Dictionary<TKey,TValue>, ключ и значение добавляются в словарь. В отличие от этого, Add метод не изменяет существующие элементы.

Ключ не может иметь значение null, но значение может иметь значение , если тип TValue значения является ссылочным типом.

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

Получение или установка значения этого свойства приближается к операции O(1).

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

Продукт Версии
.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.6, 2.0, 2.1
UWP 10.0

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