2015-08-24 115 views
1

我保持注意到用於ICommand的特性在實施例上來兩個類似的圖案,特別是作爲在MvvmCross維基https://github.com/MvvmCross/MvvmCross/wiki/Databinding#rio所示:MvvmCross命令模式

private ICommand _submitCommand; 
public ICommand SubmitCommand 
{ 
    get 
    { 
     _submitCommand = _submitCommand ?? new MvxCommand(DoSubmit); 
     return _submitCommand; 
    } 
} 

而如果沒有後備存儲器和空合併運算符,例如:

public ICommand SubmitCommand 
{ 
    get 
    { 
     return new MvxCommand(DoSubmit); 
    } 
} 

這是首選,爲什麼?

回答

2

第一個版本簡單地減少了創建的對象的數量,因爲無論命令屬性被訪問多少次,只有一個實例會存在。

在大多數情況下,這可能沒有太大的區別。大多數人使用代碼片段來生成代碼,所以沒有任何額外的輸入來生成正確的代碼。

+1

如果您想要禁用/啓用該命令,還必須使用第一個命令(但通常不會) – Stuart