zauważyłem te dwa wzory do sprawdzania flagą ENUM:Najlepsze praktyki dla sprawdzanie flagą enum
[Flags]
public enum PurchaseType
{
None = 0,
SalePrice = 2,
RegularPrice = 4,
Clearance = 8,
CreditCard = 16
}
public void Test()
{
PurchaseType type = PurchaseType.Clearance;
type |= PurchaseType.CreditCard;
// Practice 1
if ((type & PurchaseType.Clearance) == PurchaseType.Clearance)
{
// Clearance item handling
}
// Practice 2
if ((type & PurchaseType.CreditCard) != 0)
{
// Credit card item handling
}
}
Z tych dwóch sposobów sprawdzania flagą enum, który z nich jest lepszy wydajność wrt, czytelność, kod zdrowia i wszelkie inne uwagi, które powinienem zrobić?
Dzięki Mohammed
Lepiej na co? Czytelność? Wydajność? Faza księżyca? Coś innego? – Oded
Głosuję na praktykę 1. Jak byś przetestował dla 'PurchaseType.None' z praktyką 2? Edycja: Myślę, że możesz zrobić (wpisz & PurchaseType.None) == 0, ale teraz twoje kontrole nie są naprawdę spójne. – Tung
@ Tung Er, 'None' nie jest flagą, na którą można przetestować. 'type & PurchaseType.None' to' 0' dla wszystkich wartości 'type'. Nigdy nie możesz testować na "Brak", więc nie ma sensu martwić się, jak zrobić to, czego nie można zrobić i nigdy nie jest zrobione. –