अंतर्निहित रूपांतरण केवल जब प्रकार करने के लिए या (अधिमानतः को और से) कोई नुकसान डेटा की साथ एक और प्रकार से परिवर्तित किया जा सकता परिभाषित किया जाना चाहिए। एक और मानदंड यह है कि निहित रूपांतरण काफी सस्ती होना चाहिए, क्योंकि आपकी कक्षा का उपयोग करने वाले डेवलपर को इस बात से अवगत नहीं होगा कि निहित रूपांतरण कब हो रहे हैं।
एक उदाहरण: समन्वय प्रणालियों के बीच रूपांतरण। एक ध्रुवीय समन्वय वेक्टर जो कार्टेसियन निर्देशांक में परिवर्तित हो सकता है, उदाहरण के लिए, सुविधाजनक हो सकता है। हालांकि, फ्लोटिंग पॉइंट के दौर के कारण यह एक स्पष्ट रूपांतरण के रूप में छोड़ना बेहतर होगा ताकि प्रोग्रामर को रूपांतरण को मजबूर करने के लिए टाइपकास्ट करना पड़े।
लागू रूपांतरण की आवश्यकता हो सकती है यदि आपके पास दो प्रारूप प्रकार हैं जो समान प्रारूप में डेटा संग्रहीत करते हैं लेकिन प्रकारों के बीच एकमात्र अंतर अर्थपूर्ण है - उनका उपयोग कैसे किया जाता है या उनका क्या अर्थ है। असली दुनिया का उदाहरण: डेटाटाइम डेटा प्रकारों के बीच रूपांतरण जिसमें समान (या संगत) अंतर्निहित प्रतिनिधित्व होता है लेकिन केवल एपोक प्रारंभ तिथि में भिन्न होता है। पुराने फ्रेमबॉज़ को नए फ्रेमवर्क में माइग्रेट करते समय आपको ये मिल जाएगा, जहां दोनों डेटाटाइम प्रकार को परिभाषित करते हैं लेकिन अर्थशास्त्र थोड़ा अलग होते हैं। यहां लागू रूपांतरण (मान लीजिए कि कोई डेटा हानि नहीं है) शायद ठीक है और एक अच्छा विचार है।
यदि आपके पास प्रकारों का एक सेट है और आपने अपने नियमों को परिभाषित किया है कि प्रकार एक दूसरे के बीच कैसे परिवर्तित किए जा सकते हैं, तो उनमें से कुछ रूपांतरण अंतर्निहित हो सकते हैं और रूपांतरण की "गंभीरता" के आधार पर कुछ स्पष्ट हो सकते हैं। .NET में कक्षा को कार्यान्वित करते समय मैंने निहित रूपांतरण का उपयोग किया है, इसका प्राथमिक उदाहरण था जब मैं डेल्फी रनटाइम लाइब्रेरी के लिए Win32 Variant semantics को कार्यान्वित कर रहा था। Win32 और डेल्फी भाषा वेरिएंट डेटा पर कई रूपांतरण निर्दिष्ट करती हैं जिन्हें implicity किया जा सकता है।
कि आपको निहित रूपांतरण बनाने की आवश्यकता नहीं मिली है वास्तव में एक अच्छी बात है। सिर्फ इसलिए कि आप इसका मतलब यह नहीं कर सकते कि आपको चाहिए। .NET में लागू रूपांतरण मुख्य रूप से विभिन्न प्रोग्रामिंग भाषाओं को अपने स्वयं के अर्थशास्त्र का प्रतिनिधित्व करने की अनुमति देने के लिए मौजूद हैं जो कि अन्य .NET भाषाओं द्वारा अंतःक्रियाशील और समझने योग्य होना चाहिए।
मैं .NET के संख्यात्मक प्रकारों के माध्यम से पहले से प्रदान किए गए किसी भी वास्तविक कारण को नहीं सोच सकता। – leppie
यह समुदाय विकी होना चाहिए (कोई निश्चित उत्तर नहीं)। या पूछने के लिए कहा कि कब और क्यों नहीं चाहिए या नहीं चाहिए। यह बेहतर होगा। –
@ मार्टिन्हो एक उत्तर पहले से ही स्वीकार कर लिया गया था, और यह अभी भी समुदाय विकी नहीं है, इसलिए मुझे लगता है कि सभी आशा खो गई है। :) – bzlm