代表,是的我想了解這個概念的使用,它有助於在C#中解決哪些問題。到目前爲止,我非常喜歡它提供代碼的Decoupling工具。然後我遇到了謂語代表。根據this MSDN library article it shows they are, delegates that takes any data type paramter and returns a bool type value...。只能將謂詞委託調用爲布爾委託?
它還說,這個特別代表採取仿製藥,<T>
,能說那麼任何類型...
因此,它是正確的說謂詞委託僅僅是一個布爾代表?這意味着任何具有布爾返回類型的委託?還是有更多的指定與不同的名稱:謂詞委託..?
E.g.
delegate bool BooleanDelegate(anytype parameter);
BooleanDelegate bd = new BooleanDelegate(yesno);
//assuming parameter type is int
MessageBox.Show(bd.Invoke(2).ToString());
public bool yesno(anytype parameter)
{
If (parameter == 2)
{
return true;
}
Else
{
return false;
}
}
謝謝,抱歉花了我的時間來體驗,並在同一行上有更多questiosn :)你說***參數不能是ref或out。***,所以它必須是'param'? – aspiring 2013-02-28 03:36:59
當我們查看Predicate <>的[signature](http://msdn.microsoft.com/en-us/library/bfcke1bz.aspx)時,我們發現參數'T obj'確實不會攜帶'params '修飾者。它不能,因爲我們不知道'T'是否是一個'SomeType []'數組。當委託類型簽名不具有「params」時,如果方法具有「params」,則方法必須以未擴展的形式應用。例如。如果方法是靜態布爾Meth(params string [] args){...}',那麼你可以說'Predicate p1 = Meth;',但是你不能擴展,所以它不能用'Predicate p2 = Meth;'。 –
2013-02-28 06:16:27