閱讀this文章中,我發現了一個奇怪的方式來傳遞參數給對象:這是傳遞參數的正確方法嗎?
_saveProductCommand = new RelayCommand(
param => SaveProduct(),
param => (CurrentProduct != null)
這是錯字或傳遞參數正確方法?
閱讀this文章中,我發現了一個奇怪的方式來傳遞參數給對象:這是傳遞參數的正確方法嗎?
_saveProductCommand = new RelayCommand(
param => SaveProduct(),
param => (CurrentProduct != null)
這是錯字或傳遞參數正確方法?
你所看到的並不是適用於一般屬性的東西,例如,如果參數是一個字符串,你將無法使用name => statement
語法。
如果你看看RelayCommand的定義,你會看到參數的類型爲Action
這是一種特殊的類型,它允許你將代碼或方法塊作爲對象傳遞,這些通常稱爲代理。
您提到的語法稱爲Lambda
,它們有幾種形式。
最簡單的是() => doSomething()
在這種情況下,lambda不採用任何參數,只調用doSomething
方法。
接下來是一個在此代碼中採用參數param => doSomething(param)
的lambda,變量param
僅僅是lambda的代碼體的局部變量,可以使用,並且執行lambda的代碼需要傳遞一些東西在這裏,這是一個更完整的例子;
var myLambda = param => doSomething(param);
myLambda("some string value");
所以在這個例子中,字符串將被傳遞給doSomething
方法。
這些示例僅涵蓋了lambda,它將轉換爲Action
類,但您也可以編寫一個lambda來給您一個Func
。還有另一種形式叫Predicate
這實質上是一個返回true或false的Action;
它是中繼命令它通過這種方式 –
它是如果參數是委託或表達式,這意味着您可以傳遞lambdas。 – juharr
請參閱:https://msdn.microsoft.com/en-us/library/bb397687.aspx –