在研究中的錯誤的原因,我碰到這行代碼來的?什麼是C#中的「| =」運算符? |在C#「=」操作</p> <pre><code>Status |= (int)states.Reading; </code></pre> <p>什麼是:
「狀態」 正是如此定義:
public static int Status
...與訪問者和突變(或 「吸氣」 和 「二傳手」),而 「國家」 的定義是這樣的:
[Flags]
public enum states
在研究中的錯誤的原因,我碰到這行代碼來的?什麼是C#中的「| =」運算符? |在C#「=」操作</p> <pre><code>Status |= (int)states.Reading; </code></pre> <p>什麼是:
「狀態」 正是如此定義:
public static int Status
...與訪問者和突變(或 「吸氣」 和 「二傳手」),而 「國家」 的定義是這樣的:
[Flags]
public enum states
如果您在「enum」成員的頂部指定了[Flags]屬性,則使用枚舉數時,這將允許用戶在單一行程中選擇多個枚舉數。 我的意思是這樣的: -
,如果這是你的枚舉: -
[Serializable, DataContract(Namespace = "Company.Domain.LOB.Handler")]
[Flags]
public enum BankItemStatus
{
[EnumMember]
UnBatched,
[EnumMember]
Batched,
[EnumMember]
Sent,
[EnumMember]
ReplyReceived,
[EnumMember]
Closed
}
現在,如果你使用枚舉這樣的: -
BankItemStatus bankItemStatus = BankItemStatus.UnBatched;
BankItemStatus bankItemStatus = BankItemStatus.Sent;
通過bankItemStatus保存的最終值是BankItemStatus.Sent。 你可以這樣檢查: -
if(bankItemStatus.UnBatched==BankItemStatus.UnBatched) //FALSE
if(bankItemStatus.Sent==BankItemStatus.Sent) //TRUE
現在,如果你不喜歡這樣寫道: -
BankItemStatus bankItemStatus = BankItemStatus.UnBatched;
bankItemStatus |= bankItemStatus.Sent
你會看到bankItemStatus現在有兩個枚舉成員。 你可以這樣檢查: -
if(bankItemStatus.UnBatched==BankItemStatus.UnBatched) //TRUE
if(bankItemStatus.Sent==BankItemStatus.Sent) //TRUE
希望在瞭解使用幫助|在C#=運算符(在普查員的情況下)。
偉大的答案,謝謝;我曾經給另一隻貓提供了更爲詳細的答案,並且原來被授予答覆者哭得不可開交,所以我已經改變了一個我已經標記爲正確的答案,所以我會盡可能地離開接受的答案,儘管這個答案很好。順便說一下,「BatchItemStatus」應該是枚舉定義中的「BankItemStatus」。 –
但整條線沒有被註釋掉? – JustinStolle
哦,是的,你是對的 - 這是顯而易見的,但不是在編輯器(由於顏色語法突出顯示(我的VS2003設置缺乏))。所以,我會相應地編輯問題。 –
關閉,但沒有笨蛋:http://stackoverflow.com/questions/5705262/what-does-pipe-mean-in-c –