8

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

什么是受宠的?

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

public ActionResult Action(bool aBool = false)

或者

public ActionResult Action(bool? aNullableBool)

我倾向于使用默认值,因为它更清晰,更容易检查,但我想错了吗?

4

4 回答 4

11

两者不等价。在第一个示例中,调用者必须指定trueor false,如果他没有,false则使用。

在第二行中,调用者可以提供true、 或false、 或null。您将需要决定如何处理null. 这是您可以获得的第三个值。加上调用者不能省略它。他需要传递一个值。

于 2013-05-15T09:29:38.307 回答
4

可空变量的.HasValue属性有时会非常方便。拥有一个可以为空的 bool 就像在 bool 中拥有一个 bool。以 Chuong Les的数据库为例,当您读取一个单元格时,您可能希望在继续之前检查该单元格是否实际保存了一个值(最终会出现错误)。

不必在读取单元格之前确保不是这种情况,您可以使用一个可为空的变量并if (aNullableBool.HasValue)在继续之前使用它来确保您有一个值。

也就是说,除非您冒着变量获取值的风险,否则null您应该使用默认值。

于 2013-05-15T09:59:46.830 回答
0

我认为 Route 配置中的默认值会是最好的。

于 2013-05-15T09:29:25.760 回答
0

这取决于您的布尔值的作用。

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

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

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

于 2013-05-15T09:33:51.580 回答