tôi đang cố gắng ra các tính năng HasFlags mới, và đã tự hỏi nếu sau nên công việc:Nên "hay" làm việc với .Net4 Hasflags: enum.HasFlag (AccessRights.Read | AccessRights.Write)
enum.HasFlag (AccessRights.Read | AccessRights.Write)
... bởi vì nó dường như không ...
DBAccessRights rights = (DBAccessRights)permission.PermissionFlags;
if (rights.HasFlag(DBAccessRights.WikiMode))
{
// works
}
if (rights.HasFlag(DBAccessRights.WikiMode | DBAccessRights.CreateNew))
{
// Doesn't work
}
DBAccessRights flags = DBAccessRights.WikiMode | DBAccessRights.CreateNew;
if (rights.HasFlag(flags))
{
// Doesn't work
}
Quyền anh có giải thích ghi chú hiệu suất ở cuối tài liệu không? – LamonteCristo
@ makerofthings7: Có thể - thật khó để nói chắc chắn. Thật thú vị khi đo lường sự khác biệt về hiệu suất giữa khung công tác và triển khai của tôi :) –
@LamonteCristo Phương pháp này cũng phải thực hiện kiểm tra kiểu trước khi hủy hộp. Họ muốn ném một 'ArgumentException' nếu bạn chuyển một tham chiếu của một kiểu sai. Tôi tự hỏi nếu kiểm tra loại được thực hiện một lần nữa trong unboxing. Chúng ta có thể kiểm tra bytecode hoặc nguồn C#. –