使用 ASP.NET MVC 中的所有字典(如 RouteData、DataTokens 等),我经常发现自己想要做的事情如下:
bool isLolCat = routeData["isLolcat"] as bool
这将返回转换后的值,或者当值为 null 时返回默认值(在本例中为 false)。
是否有任何简短、可读、简单的方法来执行此操作,还是我最好编写一个辅助扩展方法?
扩展方法应该是这样的。
bool isLolCat = routeData["isLolcat"].TryCast<bool>();
- 如果有通用的方法,我不想用自定义语法重新发明轮子。
- 当我只是想从字典中获取 bool 值时,我不想让我的代码乱七八糟。
最佳答案
也许你喜欢以下任何一个:
(routeData["isLolcat"] as bool?).GetValueOrDefault()
(routeData["isLolcat"] as bool?).GetValueOrDefault(false)
(routeData["isLolcat"] as bool?) ?? false
否则,您将不得不编写一个帮助程序。我实际上建议使用帮助器,因为我发布的代码有点混淆你的意思。我宁愿看到这个:
routeData.GetOrDefault<bool>("isLolcat")
因为这会以书面形式记录您的意图。
关于c# - 转换不可空或返回默认值(类型)的常用方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25341187/