为什么RelayCommands通常使用的懒惰的初始化?
-
04-10-2019 - |
题
当使用的乔史密斯 RelayCommand, ,大多数的例子我已经看到了使用延迟的初始化,例如:
public class ViewModel
{
private ICommand myCommand;
public ICommand MyCommand
{
get
{
if (myCommand == null)
{
myCommand = new RelayCommand(p => DoSomething() );
}
return myCommand;
}
}
// ... stuff ...
}
而不是创造RelayCommand在构造,像这样:
public class ViewModel
{
public ViewModel()
{
MyCommand = new RelayCommand(p => DoSomething());
}
public ICommand MyCommand
{
get;
private set;
}
// ... stuff ...
}
有什么好处的使用延迟的初始化在这里?它必须呼吁得到财产时,设立结合,所以我不能看出一个理由使用这种方法在设置事在构造。
我失去了一些东西在这里?
解决方案
实际上,WPF。将获得继命令只是一旦每结合,所以你真的不需要储存一背领域有:
public ICommand MyCommand
{
get
{
return new RelayCommand(p => DoSomething());
}
}
因此,虽然没什么问题与创建它。构造函数为你的建议,有非常少的原因。
不隶属于 StackOverflow