2011-04-28 19 views
3

我試圖做一個功能,我可以給它一個操作><==!=等 我想知道是否有可能將其中一個參數設置爲函數,C#使用一個操作作爲參數

即:UseOperator("test", >, 0)

如果沒有什麼會來處理這樣的事情最好的方法是什麼?也許是一個枚舉?

回答

10

最自然的方法是通過一個委託,國際海事組織,例如類型爲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工作可能對你有用。

5

這是不可能的,但你可以使用函數委託:

UseOperator("test", (x, y) => x > y, 0); 
1

如何將運算符解析爲字符串值?

UseOperator("Test", ">", 0) 

private void UseOperator(string str1, string operator, int intVlue) 
{ 
    switch(operator) 
    { 
     case ">": 
     //..... 
    } 
} 
相關問題