C#将按位运算符作为参数传递

KOP*_*EUE 1 c# bitwise-operators

如何将按位运算符作为参数传递给我的方法?我已经阅读了一些文章,这些文章描述了如何将等式运算符作为参数传递,但是它们以某种方式实现它,并在此之后通过委托传递它.在我的情况下,我不知道如何实现按位运算符.

Mar*_*ena 5

您可以使用Func <>

int MyFunc(int input1, int input2, Func<int, int, int> bitOp)
{
    return bitOp(input1, input2);
}
Run Code Online (Sandbox Code Playgroud)

像这样使用

Console.WriteLine(MyFunc(1, 2, (a, b) => a | b));
Run Code Online (Sandbox Code Playgroud)

输出"3"


TVO*_*OHM 5

欣赏答案已经被接受了,但我想至少会分享另一种可能的方法:

int result = Bitwise.Operation(1, 2, Bitwise.Operator.OR); // 3
Run Code Online (Sandbox Code Playgroud)

声明为:

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;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)