c# – 枚举定义中的加号运算符
发布时间:2020-12-15 18:30:31 所属栏目:百科 来源:网络整理
导读:我偶然发现在枚举定义中使用了plus()运算符,我很惊讶地看到随附的测试通过了.任何人都知道这可能记录在哪里? public enum ApprovalItemState{ Enqueued = 1,Approved = 2,Denied = 4,Acknowledged = 8,ApprovalAcknowledged = ApprovalItemState.Approved +
我偶然发现在枚举定义中使用了plus()运算符,我很惊讶地看到随附的测试通过了.任何人都知道这可能记录在哪里?
public enum ApprovalItemState { Enqueued = 1,Approved = 2,Denied = 4,Acknowledged = 8,ApprovalAcknowledged = ApprovalItemState.Approved + ApprovalItemState.Acknowledged,DenialAcknowledged = ApprovalItemState.Denied + ApprovalItemState.Acknowledged } [TestClass] public class ApprovalItemStateTests { [TestMethod] public void AreFlagsDeniedAndAcknowledged() { Assert.AreEqual(ApprovalItemState.DenialAcknowledged,ApprovalItemState.Denied | ApprovalItemState.Acknowledged); } [TestMethod] public void IsDenialAcknowledged() { Assert.IsTrue(Enum.IsDefined(typeof(ApprovalItemState),ApprovalItemState.Denied | ApprovalItemState.Acknowledged)); Assert.AreEqual(ApprovalItemState.Denied | ApprovalItemState.Acknowledged,(ApprovalItemState)Enum.Parse(typeof(ApprovalItemState),"DenialAcknowledged")); } [TestMethod] public void IsNotDeniedAndApproved() { Assert.IsFalse(Enum.IsDefined(typeof(ApprovalItemState),ApprovalItemState.Approved | ApprovalItemState.Denied)); } } 解决方法
14.5中的C#语言规范指出:
基本上,由于枚举在内部存储为Int32(这是默认值,除非您指定不同的存储类型),您可以像这样使用添加. 但是,使用|更常见而不是定义面具.此外,如果您要将此作为标志枚举使用,则通常会包含[Flags]. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |