也许是一个小问题,但我很好奇。
什么是受宠的?
在控制器动作中,当传递参数时,应该何时以及如何使用它们?
public ActionResult Action(bool aBool = false)
或者
public ActionResult Action(bool? aNullableBool)
我倾向于使用默认值,因为它更清晰,更容易检查,但我想错了吗?
也许是一个小问题,但我很好奇。
什么是受宠的?
在控制器动作中,当传递参数时,应该何时以及如何使用它们?
public ActionResult Action(bool aBool = false)
或者
public ActionResult Action(bool? aNullableBool)
我倾向于使用默认值,因为它更清晰,更容易检查,但我想错了吗?
两者不等价。在第一个示例中,调用者必须指定true
or false
,如果他没有,false
则使用。
在第二行中,调用者可以提供true
、 或false
、 或null
。您将需要决定如何处理null
. 这是您可以获得的第三个值。加上调用者不能省略它。他需要传递一个值。
可空变量的.HasValue
属性有时会非常方便。拥有一个可以为空的 bool 就像在 bool 中拥有一个 bool。以 Chuong Les的数据库为例,当您读取一个单元格时,您可能希望在继续之前检查该单元格是否实际保存了一个值(最终会出现错误)。
不必在读取单元格之前确保不是这种情况,您可以使用一个可为空的变量并if (aNullableBool.HasValue)
在继续之前使用它来确保您有一个值。
也就是说,除非您冒着变量获取值的风险,否则null
您应该使用默认值。
我认为 Route 配置中的默认值会是最好的。
这取决于您的布尔值的作用。
如果你想有一个默认值或没有(默认行为+只是一个其他行为),那么这个方法只有2个行为。
如果您希望将第三种行为作为默认行为,则需要使用可为空的 bool。
因此,请考虑您的方法的需求并做出相应的选择。