2016-03-19 29 views
0

如何將一個按位運算符作爲參數傳遞給我的方法?我已經閱讀了一些描述如何傳遞等式運算符作爲參數的文章,然而他們以某種方式實現它,然後將它傳遞給委託。在我的情況下,我不知道如何實現按位運算符。C#通過按位運算符作爲參數

+0

你不能重載操作 –

+1

@SergeSemenov據https://msdn.microsoft.com/en-us/library/8edha89s.aspx,你確實可以重載位運算符。 – Eris

+0

@Eris,你是對的。我的意思是,不能像Equals方法那樣重載泛型方式。我的錯。 –

回答

5

您可以使用函數功能<>

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。這是使用從匿名函數創建的委託實例。然而,這並不完全清楚,這是提問者想要的。 –

4

欣賞答案已經在這一點上接受,但想到我會至少分享另一種可能的方法:

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