c# - 转换不可空或返回默认值(类型)的常用方法是什么

标签 c# syntax casting

使用 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/

相关文章:

Java 语法 >>, &, ?和 :

c - Visual Studio 转换问题

java优化挑剔: is it faster to cast something and let it throw exception than calling instanceof to check before cast?

c# - 使用 lambda 重新定义函数或调用标准 API (Math.Ceiling)

c# - 使用 Blazor 在 ASP.NET CORE 中更新数据库后如何刷新网页

c# - 二进制数组将映射减少到 C# 中的矩形

c++ - 如何使用常量引用访问 vector<int*> 的元素?

sql - 在 SQL 中编写左/右 JOIN 时是否使用 OUTER 关键字?

c# - 从另一个程序的文本字段中插入和检索文本的方法

c# - GC.Collect 循环?