जावा और सी # दोनों दिशाओं की अनुमति है। डाउनकास्टिंग को एक स्पष्ट कलाकार की आवश्यकता होती है और यदि ऑब्जेक्ट सही प्रकार का नहीं है तो अपवाद फेंक सकता है। उपक्रम, हालांकि, किसी भी स्पष्ट कलाकार की आवश्यकता नहीं है और हमेशा करना सुरक्षित है।
है यही कारण है, यह सोचते हैं आप इस interface
, Cat
और Dog
की public interface Animal
और दो कार्यान्वयन ....
Animal meowAnimal = new Cat(); // No cast required
Animal barkAnimal = new Dog(); // No cast required
Cat myCat = (Cat) meowAnimal; // Explicit cast needed
Dog myDog = (Dog) barkAnimal; // Explicit cast needed
Dog myPet = (Dog) meowAnimal; // Will compile but throws an Exception
है और आप स्पष्ट डाले के चारों ओर एक try
/catch
चाहता हूँ। सी # में आप उपयोगी as
कीवर्ड है:
Dog myDog = barkAnimal as Dog;
Dog myPet = meowAnimal as Dog;
कोई अपवाद फेंक दिया जाएगा, और myDog nonNull हो जाएगा और myPet अशक्त हो जाएगा। जावा में समकक्ष कीवर्ड नहीं है हालांकि आप टाइप सुरक्षा को बनाए रखने के लिए हमेशा if (meowAnimal instanceof Dog)
परीक्षणों का उपयोग कर सकते हैं। (मुझे लगता है कि होता है कि "as
" कीवर्ड बाईटकोड के is
विफल रहता है कि अगर करता है, अशक्त बताए उत्पन्न करता है। लेकिन शायद नेट एक बाईटकोड अनुदेश कि "as
" के समकक्ष करता है।)
सी #, हालांकि मुझे उम्मीद है कि उत्तर सभी ओओ भाषाओं में सही होगा। – dotnetdev
इस तरह की चीज ओओ भाषाओं में समान होने की संभावना है, लेकिन जरूरी नहीं है। सी # पर स्कॉइंग करना ताकि हम आपके लिए एक विशिष्ट उत्तर प्रदान कर सकें। –