我試圖做一個功能,我可以給它一個操作>
<
==
!=
等 我想知道是否有可能將其中一個參數設置爲函數,C#使用一個操作作爲參數
即:UseOperator("test", >, 0)
如果沒有什麼會來處理這樣的事情最好的方法是什麼?也許是一個枚舉?
我試圖做一個功能,我可以給它一個操作>
<
==
!=
等 我想知道是否有可能將其中一個參數設置爲函數,C#使用一個操作作爲參數
即:UseOperator("test", >, 0)
如果沒有什麼會來處理這樣的事情最好的方法是什麼?也許是一個枚舉?
最自然的方法是通過一個委託,國際海事組織,例如類型爲Func<int, int, bool>
。不幸的是,你不能直接轉換操作員的委託 - 但是你可以寫方法很簡單,使用方法組轉換:
public void UseOperator(string name, Func<int, int, bool> op, int value)
{
...
}
public static bool GreaterThan(int x, int y, value)
{
return x > y;
}
UseOperator("test", GreaterThan, 0);
馬克Gravell的在MiscUtilgeneric operators工作可能對你有用。
這是不可能的,但你可以使用函數委託:
UseOperator("test", (x, y) => x > y, 0);
如何將運算符解析爲字符串值?
UseOperator("Test", ">", 0)
private void UseOperator(string str1, string operator, int intVlue)
{
switch(operator)
{
case ">":
//.....
}
}