नहीं। आईएल आउटपुट (LINQPad में जेनरेट) देखें। यह वास्तव में एक कन्स्ट्रक्टर को बिल्कुल नहीं बुला रहा है। इसके बजाए, यह f
नामक स्थानीय चर के अंदर पूर्णांक मान 0 संग्रहीत कर रहा है। यह सटीक उसी आउटपुट है जैसा कि आप enum में टाइप प्रकार का उपयोग करते समय प्राप्त करते हैं।
जहां तक संकलक का संबंध है, Fruits f = new Fruits();
Fruit f = (Fruit)0;
जैसा ही है।
Fruits f = new Fruits()
आईएल
Program.Main:
IL_0000: nop
IL_0001: ldc.i4.0
IL_0002: stloc.0 // f
IL_0003: ret
Program..ctor:
IL_0000: ldarg.0
IL_0001: call System.Object..ctor
IL_0006: ret
तुलना के लिए, यहाँ एक सामान्य वर्ग के आईएल उत्पादन है। कार्यक्रम के तहत IL_001 देखें। मुख्य जहां यह वास्तव में कक्षा के लिए एक कन्स्ट्रक्टर कहता है।
Program.Main:
IL_0000: nop
IL_0001: newobj UserQuery+Program+Fruits..ctor
IL_0006: stloc.0 // f
IL_0007: ret
Program..ctor:
IL_0000: ldarg.0
IL_0001: call System.Object..ctor
IL_0006: ret
Fruits..ctor:
IL_0000: ldarg.0
IL_0001: call System.Object..ctor
IL_0006: ret
स्रोत
2015-08-05 14:14:27
आप ऐसे निर्माता के साथ क्या करना चाहते हैं? –
मैं डिफ़ॉल्ट रूप से ऐप्पल लौटने के अपने डिफ़ॉल्ट व्यवहार को ओवरराइड करना चाहता हूं, बस जोर से सोच रहा हूं। – yogi
एनम विकल्प सूचीबद्ध किए गए क्रम को बदलकर आप डिफ़ॉल्ट रूप से बदल सकते हैं। –