Есть ли способ сделать это, например, использовать лямбды каким-то образом? Если у меня есть словарь, можно ли сократить мой код, чтобы TryGetValue выдавал Foo.a вместо простого возврата объекта?
Прямо сейчас это выглядит немного скучно, например, "a" как int:
int a;
Foo bar;
if(!dict.TryGetValue(key, out valueObj)) {
a = 0;
}
else {
a = bar.a;
}
3 ответа
Зачем вам нужен LINQ для достижения чего-то такого простого?
public Object GetObjectFromDict(string foo)
{
if (someDict.ContainsKey(foo))
{
return someDict[foo];
}
return null;
}
Вы можете немного упростить это с помощью условного выражения и новой функции C out var
:
int a = dict.TryGetValue(key, out var valueObj) ? valueObj.a : 0;
По сути, это то же решение, которое вы представили, только переписанное в одну строку.
Вот один лайнер:
int a = dict.TryGetValue(key, out SomeClass valueObj) ? valueObj.a : 0;
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.