C#通过按位运算符作为参数
问题描述:
如何将一个按位运算符作为参数传递给我的方法?我已经阅读了一些描述如何传递等式运算符作为参数的文章,然而他们以某种方式实现它,然后将它传递给委托。在我的情况下,我不知道如何实现按位运算符。C#通过按位运算符作为参数
答
您可以使用函数功能<>
int MyFunc(int input1, int input2, Func<int, int, int> bitOp)
{
return bitOp(input1, input2);
}
使用这样
Console.WriteLine(MyFunc(1, 2, (a, b) => a | b));
输出 “3”
+1
Upvoted。这是使用从匿名函数创建的委托实例。然而,这并不完全清楚,这是提问者想要的。 –
答
欣赏答案已经在这一点上接受,但想到我会至少分享另一种可能的方法:
int result = Bitwise.Operation(1, 2, Bitwise.Operator.OR); // 3
声明如下:
public static class Bitwise
{
public static int Operation(int a, int b, Func<int, int, int> bitwiseOperator)
{
return bitwiseOperator(a, b);
}
public static class Operator
{
public static int AND(int a, int b)
{
return a & b;
}
public static int OR(int a, int b)
{
return a | b;
}
}
}
你不能重载操作 –
@SergeSemenov据https://msdn.microsoft.com/en-us/library/8edha89s.aspx,你确实可以重载位运算符。 – Eris
@Eris,你是对的。我的意思是,不能像Equals方法那样重载泛型方式。我的错。 –