根据条件逻辑使用不同的比较运算符

时间:2019-09-02 21:19:41

标签: c# operators conditional-statements

我不想在应用程序中复制大量代码,因此我想执行以下操作。

// PSEUDO CODE

if (next == true) {operator = "<=";}
else {operator = ">=";}

// Should use "row >= nowRow" or "row <= nowRow" to avoid having repeated code
if (row.Count operator nowRow) { ... }

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

您可以使用lambda表达式执行类似的操作

var compare = next ? (Func<int,int,bool>)((l, r) => l <= r) : ((l, r) => l >= r);

if(compare(rowDat.Count, nowRow))
{
}

答案 1 :(得分:0)

您可以将函数分配给委托类型的变量。 对于您来说,Func<T1,T2,TResult> Delegate是合适的。

Func<int, int, bool> func = (x,y) => x <= y;
Console.WriteLine(func(1,2));