C#通过按位运算符作为参数

问题描述:

如何将一个按位运算符作为参数传递给我的方法?我已经阅读了一些描述如何传递等式运算符作为参数的文章,然而他们以某种方式实现它,然后将它传递给委托。在我的情况下,我不知道如何实现按位运算符。C#通过按位运算符作为参数

+0

你不能重载操作 –

+1

@SergeSemenov据https://msdn.microsoft.com/en-us/library/8edha89s.aspx,你确实可以重载位运算符。 – Eris

+0

@Eris,你是对的。我的意思是,不能像Equals方法那样重载泛型方式。我的错。 –

您可以使用函数功能<>

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; 
     } 
    } 
}