我一直注意到两个类似的ICommand属性模式出现在示例中,特别是如MvvmCross wiki https://github.com/MvvmCross/MvvmCross/wiki/Databinding#rio所示:
private ICommand _submitCommand;
public ICommand SubmitCommand
{
get
{
_submitCommand = _submitCommand ?? new MvxCommand(DoSubmit);
return _submitCommand;
}
}
没有后备存储和null-coalescing运算符,例如:
public ICommand SubmitCommand
{
get
{
return new MvxCommand(DoSubmit);
}
}
哪个是首选,为什么?
答案 0 :(得分:2)
第一个版本只是减少了创建的对象数量,因为无论访问命令属性多少次,都只存在一个实例。
在大多数情况下,这可能没有太大的区别。大多数人使用代码片段来生成代码,因此不需要任何额外的输入来生成正确的代码。