सी # में, यदि हम enum
को परिभाषित करते हैं जिसमें एक नकारात्मक मान के अनुरूप सदस्य होता है, और फिर हम उस enum
के मानों पर फिर से सक्रिय होते हैं, तो नकारात्मक मान पहले नहीं आता है, लेकिन आखिरी है। ऐसा क्यों होता है? अन्य भाषाओं में (सी, सी ++, एडीए, इत्यादि), enum
पर पुनरावृत्ति आपको वह आदेश देगा जिसमें आपने इसे परिभाषित किया था।ऋणात्मक enum सदस्यों का अनुमान लगाया गया है कि आखिरी बार अनुमान लगाया गया है?
MSDN है एक अच्छा example of this behavior:
using System;
enum SignMagnitude { Negative = -1, Zero = 0, Positive = 1 };
public class Example
{
public static void Main()
{
foreach (var value in Enum.GetValues(typeof(SignMagnitude)))
{
Console.WriteLine("{0,3} 0x{0:X8} {1}",
(int) value, ((SignMagnitude) value));
}
}
}
// The example displays the following output:
// 0 0x00000000 Zero
// 1 0x00000001 Positive
// -1 0xFFFFFFFF Negative
इसे शायद हस्ताक्षरित के रूप में क्रमबद्ध किया जा रहा है। – SLaks
आपने इसे [* एक * कई प्रोग्रामर की तुलना में एक कदम आगे बढ़ाया] (http://stackoverflow.com/questions/18095665/a-lambda-expression-with-a-statement-body-cannot-be-converted-to-an - संपीड़न-टी/18095816 # टिप्पणी 26488750_18095816) दस्तावेज बनाने के द्वारा। अगली बार, इसे पढ़ें: "सरणी के तत्वों को गणना स्थिरांक के बाइनरी मानों द्वारा क्रमबद्ध किया जाता है (** अर्थात, उनके हस्ताक्षरित परिमाण ** द्वारा)।" – jason
उसी [एमएसडीएन] (http://msdn.microsoft.com/en-us/library/system.enum.getvalues.aspx) आलेख से: "सरणी के तत्वों को गणना स्थिरांक के द्विआधारी मूल्यों द्वारा क्रमबद्ध किया जाता है (यानी, उनके हस्ताक्षरित परिमाण से)। " – natenho