TryGetValue是否改变输入参数?
在使用TryGetValue时,我倾向于这样做:
Dictionary<int, long> myDic;
long lValue = -1;
long lTemp1;
if( myDic.TryGetValue(100, out lTemp1)){
lValue = lTemp1;
}我应该直接这样写吗?
myDic.TryGetValue(nKeyToLookup, out lValue);发布于 2020-01-24 04:45:33
如文档所述
当此方法返回时,如果找到该键,则与指定键关联的值;否则为值参数类型的默认值。
该值将被更改。
如果您想缩短代码,可以这样做。
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小提琴现场工作示例
https://stackoverflow.com/questions/59890374
复制相似问题