Enum là stucts và do đó được phân bổ trên stack, trong khi các công đoàn phân biệt đối xử là các kiểu tham chiếu vì vậy được phân bổ đống. Vì vậy, bạn sẽ mong đợi DU được ít hơn performant rằng enums, mặc dù trong thực tế có thể bạn sẽ không bao giờ nhận thấy sự khác biệt này.
Quan trọng hơn là một liên minh phân biệt chỉ có thể là một trong các loại được khai báo, khi mà enums thực sự chỉ là số nguyên, vì vậy bạn có thể truyền một số nguyên không phải là thành viên của enum vào kiểu enum. Điều này có nghĩa là khi mẫu khớp với trình biên dịch có thể xác nhận rằng khớp mẫu được hoàn thành khi bạn đã bao phủ tất cả các trường hợp cho DU, nhưng đối với một enum, bạn phải luôn đặt một giá trị mặc định trong tất cả các trường hợp còn lại. sẽ luôn cần mẫu phù hợp như:
match enumColor with
| Red -> 1
| Green -> 2
| Blue -> 3
| _ -> failwith "not an enum member"
trường hợp trường hợp cuối cùng không cần thiết với DU.
Một điểm cuối cùng, vì enums được hỗ trợ nguyên bản trong cả C# và VB.NET, như DU không, enums thường là lựa chọn tốt hơn khi tạo API công khai để sử dụng bởi các ngôn ngữ khác.