我有兩個列舉:
public enum Fruits
{
Apple = 1,
Banana = 2,
Strawberry = 3,
Blueberry = 4
}
public enum FruitsCombined
{
Apple = 1,
Banana = 2,
Berries = 0 //Strawberry and Blueberry combined
}
我有一個系結到FruitsCombined列舉的組合框,但是在后臺,當我選擇時Berries,我想說它是Fruits列舉中的 3 和 4。
我怎樣才能做到這一點?
例如,我想用兩個列舉替換這個更好的方法:
if ((int)cboFilterFruitType.SelectedValue == 0)
{
order = order.FindAll(o => o.FruitID == 3 || o.FruitID == 4);
}
else
{
order = order.FindAll(o => o.FruitID == (int) cboFilterFruitType.SelectedValue);
}
uj5u.com熱心網友回復:
如果您可以控制兩個列舉,則可以使用評論中建議的標志將列舉組合在一起。
[Flags]
public enum Fruits
{
None = 0,
Apple = 1,
Banana = 2,
Strawberry = 4,
Blueberry = 8,
Berries = Strawberry | Blueberry
}
那么如果你有這樣的代碼
var fruit = Fruits.Berries;
Console.WriteLine(fruit.HasFlag(Strawberry));
Console.WriteLine(fruit.HasFlag(Blueberry));
兩個寫行都將列印為真。
uj5u.com熱心網友回復:
正如 stuartd 鏈接所說,做一些更像
更改為二的冪
public enum Fruits
{
Apple = 1,
Banana = 2,
Strawberry = 4,
Blueberry = 8
}
然后你可以使用按位來表示任何組合
var appBann = Fruits.Apple | 西裝。香蕉;
或漿果 = Fruits.Strawberry | 西裝.藍莓
你甚至可以將它作為一個列舉
public enum Fruits
{
Apple = 1,
Banana = 2,
Strawberry = 4,
Blueberry = 8,
Berries = Strawberry | Blueberry
}
order = order.FindAll(o => o.FruitID == (int)Fruits.Berries);
uj5u.com熱心網友回復:
您可以使用flags列舉:
[Flags]
public enum Fruits
{
Apple = 1,
Banana = 2,
Strawberry = 4,
Blueberry = 8
}
public enum FruitsCombined
{
Apple = 1,
Banana = 2,
Berries = Fruits.Strawberry | Fruits.Blueberry //Strawberry and Blueberry combined
}
現在您可以將一個轉換為另一個:
FruitsCombined fruitCombined = FruitsCombined.Berries;
Fruits fruit = (Fruits)fruitCombined; // Fruits.Strawberry | Fruits.Blueberry
如果你想檢查它是否是漿果,你可以使用Enum.HasFlag:
bool isBerry = fruit.HasFlag(Fruits.Strawberry | Fruits.Blueberry);
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/512533.html
標籤:C#枚举
上一篇:單擊時選擇和取消選擇(其他)按鈕
下一篇:從JWT令牌獲取宣告、權限和角色
