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