可以使用默认值的可空的bool或bool?

时间:2013-05-15 09:25:39

标签: c# asp.net-mvc nullable default-value

也许是一个小问题,但我好奇。

有什么好处?

在控制器操作中,传递参数时,应该何时以及如何使用它们?

public ActionResult Action(bool aBool = false)

public ActionResult Action(bool? aNullableBool)

我倾向于使用defualt-value,因为它更清晰,更容易检查,但我认为错了吗?

4 个答案:

答案 0 :(得分:6)

这两者并不相同。在第一个示例中,调用者必须指定truefalse,如果他没有,则使用false

在第二行中,来电者可能会提供truefalsenull。您需要决定如何处理null。这是你可以获得的第三个价值。加上来电者不能省略它。他需要传递一个值。

答案 1 :(得分:3)

可空变量的.HasValue属性有时非常方便。有一个可空的布尔就像在布尔中有一个布尔。将Chuong Les example与数据库一起使用,当您读取一个单元格时,您可能想要在继续​​之前检查该单元格是否实际保留了一个值(并且最后会出现错误)。

您无需在读取单元格之前确保不是这种情况,而是可以使用可变量变量并使用if (aNullableBool.HasValue)确保在继续之前有值。

有人说,除非你冒变量获得值null的风险,否则你应该使用默认值。

答案 2 :(得分:0)

我认为路线配置中的默认值最好。

答案 3 :(得分:0)

这取决于你的博尔的作用。

如果你想要一个默认值(默认行为+只有一个其他行为),那么这个方法只有2个行为。

如果您希望将第三种行为作为默认行为,则需要使用可以为空的bool。

因此,请考虑您的方法的需求并相应地选择。