Словарь TryGetValue выходной параметр - PullRequest
0 голосов
/ 24 января 2020

Меняет ли TryGetValue входной параметр?

при использовании TryGetValue, я склонен делать:

Dictionary<int, long> myDic;
long lValue = -1;
long lTemp1;

if( myDic.TryGetValue(100, out lTemp1)){
    lValue = lTemp1;
}

я должен писать прямо таким образом?

myDic.TryGetValue(nKeyToLookup, out lValue);

1 Ответ

1 голос
/ 24 января 2020

Как указано в документации

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

, значение будет изменено.

Если вы хотите сократить код, вы можете сделать это

Dictionary<int, long> myDic;

if( !myDic.TryGetValue(100, out var lValue))
{
    lValue = -1;
}

Обновление

Вы можете написать собственный метод расширения TryGetValue, который принимает ref TValue value

public static class DictionaryExtensions
{
    public static bool TryGetValue<TKey,TValue>( this IDictionary<TKey,TValue> dict, TKey key, ref TValue value )
    {
        var result = dict.TryGetValue( key, out var foundValue );
        if ( result )
            value = foundValue;
        return result;
    }
}

живой рабочий пример на . net скрипка

...