2012-03-16 10 views
5

可能性の重複:
What is the diffference between the | and || or operators?
What does | (pipe) mean in c#?シングル|または?

私は、現時点ではではないオフィスで別の開発者によって書かれたいくつかのコードを持っています。私は彼のコードで行うべきいくつかの仕事を持っていますが、私はこれまでに昏睡させていません。私はここで検索しようとしましたが、それは私の|検索行の外に出ます。私はまた、そのシンボルの名前が何であるか分からないので、そのようにそれを検索することはできませんでした。

this.Action.Values[key] = (int)this.Action.Values[key] | 1; 

私の質問はこのインスタンスでは何ですか?

+0

ビット単位 'または'ビット単位 'と' http://en.wikipedia.org/wiki/Bitwise_operation – kenny

+0

質問に記載されているように、重複した投稿のお詫びは、このサイトの検索ボックスから除外されます|シンボル。 – Andrew

答えて

7

バー(またはパイプ)、|は、ビット単位OR演算子であり、それを説明する最も簡単な方法は、それがフラグを結合するために私たちを可能にすることです。考えてみましょう:

ビット単位-OR演算子を使用して
[Flags] 
public enum WindowFlags 
{ 
    None = 0, 
    Movable = 1, 
    HasCloseBox = 2, 
    HasMinimizeBox = 4, 
    HasMaximizeBox = 8 
} 

、我々は以下のようなものを、フラグを組み合わせることができます。

WindowFlags flags = WindowFlags .Movable | WindowFlags .HasCloseBox | WindowFlags .HasMinimizeBox; 

を私たちは、与えられたフラグの "テスト" することができ、使用して:

bool isMovable = (flags & WindowFlags .Movable); 

の削除をフラグは、眼球のひずみのビットです。

flags &= ~WindowFlags.HasCloseBox; // remove HasCloseBox flag 
1

この演算子は、ただORを意味します。

バイナリ|積分型とboolには演算子があらかじめ定義されています。整数型の の場合は|そのオペランドのビットごとのORを計算します。ブール オペランドの場合、|そのオペランドの論理和を計算します。つまり、 の結果は、そのオペランドが両方とも偽である場合に限り、falseになります。

リファレンスhere

を参照してくださいC#でのすべてのオペレータhere

1

| - >論理/ビット単位のOR

& - >論理/ビット単位のAND

3

これはビット単位の操作です。

011000101 
| 100100100 
----------- 
= 111100101 


    011000101 
& 100100100 
----------- 
= 000000100 
1

バイナリ|積分型とboolには演算子があらかじめ定義されています。整数型の場合、|そのオペランドのビットごとのORを計算します。ブールオペランドの場合は|そのオペランドの論理和を計算します。つまり、両方のオペランドがfalseの場合にのみ、結果はfalseになります。

http://msdn.microsoft.com/en-us/library/kxszd0kx(v=vs.100).aspx

1

シングル|ビット単位のOR演算子です

関連する問題