c# - 少错 TryGetValue 然后 null 检查语法

标签 c# null-coalescing-operator trygetvalue

我对 C# 还是有点陌生​​......我发现自己一遍又一遍地重复使用特定的过程。在我为个人懒惰编写辅助方法之前,是否有更短或错误更少的方法来编写这种语句?

Dictionary<string, string> data = someBigDictionary;
string createdBy;
data.TryGetValue("CreatedBy", out createdBy);
//do that for 15 other values
...
MyEntity me = new MyEntity{
    CreatedBy = createdBy ?? "Unknown",
    //set 15 other values
    ...
}

本质上,通过尝试获取值来设置对象的属性,然后如果它为空则使用默认值。我有很多属性,如果我能就更好

MyEntity me = new MyEntity{
    CreatedBy = TryToGetValueOrReturnNull(data, "CreatedBy") ?? "Unknown",
    ...
}

同样,我完全有能力编写自己的辅助函数。在我这样做之前,我正在寻找现有的 native 功能或速记。

最佳答案

有许多类似的问题(如 thisthis)提出了从扩展方法到从字典继承和覆盖索引器的不同解决方案。但是,它们是在 C# 7 之前编写的,使用 C# 7,您可以在一行中完成此操作:

CreatedBy = data.TryGetValue("CreatedBy", out var value) ? value : "Unknown"

关于c# - 少错 TryGetValue 然后 null 检查语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44390571/

相关文章:

c# - 如何使这个 Dictionary TryGetValue 代码更具可读性?

c# - LINQ Group by Query 中的组号

c# - 依赖注入(inject)在本地 Azure 函数中不起作用

c# - C# 的空合并运算符 (??) 的右侧是否被延迟计算?

C# 类型推断 ("var") 从 '??' 空合并运算符赋值

c# - 可以重载空合并运算符吗?

c# - 在 VisualStudio UI 设计器中查看 XAML 文件会执行文件后面的代码吗?

c# - 如何将文件添加到现有的 zip 存档

c# - 即使键存在,TryGetValue 的计算结果也为 False

c# - 如何调用 Dictionary<K, V>.TryGetValue() where K : Predicate<T>, V : enum