tôi nhận thấy hai mô hình này để kiểm tra cho một lá cờ enum:Thực hành tốt nhất để kiểm tra cho một lá cờ 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
}
}
Trong hai cách để kiểm tra cho một lá cờ enum, cái nào là tốt hơn hiệu suất wrt, dễ đọc, mã sức khỏe, và bất kỳ cân nhắc khác tôi nên thực hiện?
Cảm ơn, Mohammed
Tốt hơn cho những gì? Dễ đọc? Hiệu suất? Giai đoạn của mặt trăng? Thứ gì khác? – Oded
Tôi bỏ phiếu cho thực hành 1. Làm thế nào bạn sẽ thử nghiệm cho 'PurchaseType.None' với thực hành 2? Chỉnh sửa: Tôi đoán bạn có thể làm (loại & PurchaseType.None) == 0, nhưng sau đó bây giờ kiểm tra của bạn không thực sự phù hợp. – Tung
@Tung Er, 'None' không phải là cờ có thể được kiểm tra. 'type & PurchaseType.None' là' 0' cho tất cả các giá trị của 'type'. Bạn không bao giờ có thể kiểm tra cho 'Không có' vì vậy không có điểm đáng lo ngại về việc làm thế nào để làm những gì không thể được thực hiện và không bao giờ được thực hiện. –