简化TryGetValue以访问键值的属性?

时间:2018-02-24 09:44:02

标签: c# dictionary

有没有办法做到这一点,比如以某种方式使用lambdas?如果我有一个字典,是否可以缩短我的代码,以便TryGetValue输出Foo.a而不是只返回对象?

现在感觉有点啰嗦,例如" a" as int:

int a;
Foo bar;
if(!dict.TryGetValue(key, out valueObj)) {
    a = 0;
}
else {
    a = bar.a;
}

3 个答案:

答案 0 :(得分:2)

为什么你需要LINQ来实现这么简单的事情?

public Object GetObjectFromDict(string foo)
{
    if (someDict.ContainsKey(foo))
    {
        return someDict[foo];
    }
    return null;
}

答案 1 :(得分:2)

您可以使用条件表达式和新的C#out var功能稍微简化一下:

int a = dict.TryGetValue(key, out var valueObj) ? valueObj.a : 0;

这与您提供的解决方案基本相同,只能在一行上重写。

答案 2 :(得分:1)

这是一个班轮:

int a = dict.TryGetValue(key, out SomeClass valueObj) ? valueObj.a : 0;
相关问题