एफ # "अप्रबंधित" के लिए एक प्रकार बाधा का समर्थन करता है। यह "संरचना" बाधाओं जैसे मूल्य प्रकार की बाधा के समान नहीं है। MSDN notes कि अप्रबंधित बाधा का व्यवहार है:व्यवहार
प्रदान किया गया प्रकार एक अप्रबंधित प्रकार होना चाहिए। अप्रबंधित प्रकार या तो कुछ आदिम प्रकार (sbyte, बाइट, चार, nativeint, unativeint, float32, नाव, int16, uint16, int32, uint32, int64, uint64, या दशमलव), गणन प्रकार, nativeptr < गैर हैं _>, या जेनेरिक संरचना जिसका क्षेत्र सभी अप्रबंधित प्रकार हैं।
यह एक बहुत ही आसान अवरोध प्रकार जब मंच मंगलाचरण कर रही है, और की तुलना में एक बार मैं चाहता हूँ सी # ऐसा करने का एक तरीका था अधिक। सी # में यह बाधा नहीं है। सी # सभी बाधाओं कि सीआईएल में निर्दिष्ट किया जा सकता का समर्थन नहीं करता। इसका एक उदाहरण एक गणना है। सी # में, यदि आप ऐसा नहीं कर सकते हैं:
public void Foo<T>(T bar) where T:enum
हालांकि, सी # संकलक "enum" बाधा का सम्मान करता है, तो यह एक और पुस्तकालय में यह भर आता है। जॉन स्कीट इस का उपयोग करने के लिए अपने Unconstrained Melody प्रोजेक्ट बनाने के लिए सक्षम है।
तो, मेरा सवाल यह है कि, एफ # की "अप्रबंधित" बाधा है जिसे सीआईएल में एक enum बाधा की तरह प्रदर्शित किया जा सकता है और सी # में खुलासा नहीं किया गया है, या इसे एफ # कंपाइलर द्वारा पूरी तरह से लागू किया गया है जैसे कि कुछ अन्य बाधाएं एफ # समर्थन करता है (स्पष्ट सदस्य प्रतिबंध की तरह)?
एक डिकंपेलर में एक त्वरित उदाहरण को देखते हुए कोई आईएल नहीं है जो इंगित करेगा कि प्रकार बाधित है। मेरा अनुमान है कि जानकारी emdbedded हस्ताक्षर फ़ाइल में शामिल है और इसलिए केवल एफ # कंपाइलर द्वारा लागू किया जाता है। –
@ माइकज़ हाँ, यह निष्कर्ष है कि मैं पहुंच गया हूं। – vcsjones
तब उत्तर की तरह लगता है। – eis