我对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
    ...
}


本质上,通过尝试获取值在对象上设置属性,然后如果它为null,则使用默认值。我有很多物业,如果我能

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


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

最佳答案

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

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

08-07 17:40