"किसी भी वर्ग-प्रकार एस से किसी भी इंटरफ़ेस-प्रकार टी तक, प्रदान किया गया एस प्रदान नहीं किया गया है और प्रदान किया गया है एस एस लागू नहीं करता है।" वास्तव में मतलब है?"किसी भी वर्ग-प्रकार एस से किसी भी इंटरफ़ेस-प्रकार टी तक, क्या प्रदान किया जाता है एस को सील नहीं किया जाता है और प्रदान किया जाता है एस एस लागू नहीं करता है।" वास्तव में मतलब है?
मैं में सी # भाषा के विनिर्देशों here इस भर में आया था:
को लागू नहीं है प्रदान नहीं की है6.2.4 स्पष्ट संदर्भ रूपांतरण
स्पष्ट संदर्भ रूपांतरण हैं:
- ...
- किसी भी वर्ग-प्रकार एस से किसी भी इंटरफ़ेस-प्रकार टी, प्रो मिली एस सील और एस टी
मैं समझता हूँ "बशर्ते एस बंद है नहीं" क्या मतलब है, लेकिन मुझे यकीन है कि अगर मैं समझता हूँ कि क्या "प्रदान की एस करता है नहीं कर रहा हूँ टी लागू नहीं "वास्तव में मतलब है।
उदाहरण के लिए:
class S {}//not sealed, nor does it implement T
interface T {}
...
T t = (T)new S();//will throw InvalidCastException.
यह है कि यह चश्मा में है केवल एक स्पष्ट संदर्भ रूपांतरण, को व्यक्त करने का सभी वाक्य रचना सही तरीके की गणना करने के लिए कि क्या यह एक अपवाद फेंक देते हैं या नहीं हो सकता है? या क्या इसका मतलब कुछ और चीज है जिसे मैं नहीं जानता (अभी तक)?
अग्रिम धन्यवाद।
नोट: आपके उदाहरण में स्पष्ट रूपांतरण मौजूद था। अन्यथा यह संकलित नहीं होता। संकलन समय पर सब अच्छा है। तथ्य यह है कि रूपांतरण रन-टाइम पर उड़ाता है वह कुछ है जो * स्पष्ट * रूपांतरणों के लिए विशिष्ट है। कभी-कभी वे फेंकते हैं, कभी-कभी वे सफल होते हैं। अब, इसके विपरीत, यदि 'एस'' टी' लागू करता है, तो *** *** अंतर्निहित *** संदर्भ रूपांतरण होता है (उस पर अन्य उपखंड देखें)। इसलिए वे कहते हैं कि 'एस' 'टी' लागू नहीं करता है, अन्यथा पहले से ही एक और (बेहतर) रूपांतरण उपलब्ध होगा। –