Mvvm交叉命令模式
MvvmCross Command Pattern
我一直注意到示例中出现了 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;
}
}
并且没有后备存储和空合并运算符,例如:
public ICommand SubmitCommand
{
get
{
return new MvxCommand(DoSubmit);
}
}
哪个是首选,为什么?
第一个版本只是减少了创建对象的数量,因为无论命令 属性 被访问多少次,都只会存在一个实例。
在大多数情况下,这可能没有太大区别。大多数人使用代码片段来生成代码,因此无需任何额外的输入即可生成正确的代码。
我一直注意到示例中出现了 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;
}
}
并且没有后备存储和空合并运算符,例如:
public ICommand SubmitCommand
{
get
{
return new MvxCommand(DoSubmit);
}
}
哪个是首选,为什么?
第一个版本只是减少了创建对象的数量,因为无论命令 属性 被访问多少次,都只会存在一个实例。
在大多数情况下,这可能没有太大区别。大多数人使用代码片段来生成代码,因此无需任何额外的输入即可生成正确的代码。