में प्लस ऑपरेटर आज मैं एक एनम परिभाषा में प्लस (+) ऑपरेटर के उपयोग पर ठोकर खा गया, मैं साथ में परीक्षण परीक्षणों को देखकर आश्चर्यचकित हुआ। किसी को भी कोई विचार है जहां इसे दस्तावेज किया जा सकता है?एनम परिभाषा
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));
}
}
ऐसा इसलिए है क्योंकि enum मान केवल डिफ़ॉल्ट रूप से Int32 मान हैं। अगर कोडर इस्तेमाल होता तो यह बेहतर होगा (बिट या) इसके बजाय, मुझे लगता है। –
@DanielPratt थोड़ा सा फिसल गया, जिसे उत्तर के रूप में भी पोस्ट किया जा सकता है। :) –
मुझे लगता है कि आपको थोड़ा सा उपयोग करना चाहिए या इसके बजाय, यदि आप इस enum को ध्वज के रूप में उपयोग करना चाहते हैं तो यह सहायक हो सकता है: http://msdn.microsoft.com/en-us/library/system.flagsattribute.aspx – 0lukasz0