c using statement c virtual method tutorial with examples
यह गहराई से ट्यूटोरियल स्टेटमेंट और वर्चुअल मेथड का उपयोग करते हुए C के बारे में बताता है। आप सार और आभासी तरीकों के बीच अंतर भी जानेंगे:
द यूजिंग ब्लॉक मुख्य रूप से संसाधनों के प्रबंधन में मदद करता है, यह सिस्टम को ऑब्जेक्ट के दायरे और इसकी संसाधन आवश्यकता को निर्दिष्ट करके अपने संसाधनों का प्रबंधन करने की अनुमति देता है।
.Net फ्रेमवर्क एक कचरा कलेक्टर का उपयोग करके वस्तुओं के लिए संसाधन प्रबंधन के लिए अलग-अलग तरीके प्रदान करता है। इसका मतलब है कि आपको मेमोरी ऑब्जेक्ट्स को स्पष्ट रूप से आवंटित करने और हटाने की आवश्यकता नहीं है। किसी भी अनवांटेड ऑब्जेक्ट के लिए सफाई ऑपरेशन को विध्वंसक का उपयोग करके नियंत्रित किया जाएगा।
प्रोग्रामर्स को इसे प्राप्त करने में मदद करने के लिए, C # स्टेटमेंट का उपयोग ऑब्जेक्ट के विनाश के लिए एक शर्त प्रदान करता है।
=> यहां नि: शुल्क सी # प्रशिक्षण गाइड देखें ।
ऑब्जेक्ट के ऑटो-विनाश को प्राप्त करने के लिए, C # एक डिस्पोजल विधि प्रदान करता है जिसे तब कॉल किया जा सकता है जब ऑब्जेक्ट की आवश्यकता नहीं होती है। C # में उपयोग कथन वस्तु के अस्तित्व के लिए एक सशर्त सीमा को परिभाषित करता है। एक बार निष्पादन अनुक्रम उपयोग की सीमा को छोड़ देता है, .नेट फ्रेमवर्क को पता चल जाएगा कि उस वस्तु को नष्ट करने का उसका समय है।
आप क्या सीखेंगे:
C # स्टेटमेंट का उपयोग करना
उपयोग करने के लिए आईडीसोपोलेटरी इंटरफ़ेस लागू करें
C # स्टेटमेंट के उपयोग से प्रोग्रामर एक स्टेटमेंट में कई संसाधनों को लागू कर सकते हैं। उपयोग करने वाले कोड ब्लॉक के अंदर परिभाषित सभी वस्तुओं को आईडीसॉरोफ़िक इंटरफ़ेस को लागू करना चाहिए, और यह रूपरेखा को कथन से बाहर निकलने के बाद निर्दिष्ट ऑब्जेक्ट के लिए निपटान विधियों को कॉल करने की अनुमति देता है।
उदाहरण
बयानों का उपयोग करके एक प्रकार के साथ जोड़ा जा सकता है जो कि आईडीस्रोपी को लागू कर सकता है जैसे स्ट्रीमराइटर, स्ट्रीमराइडर, आदि।
आइए एक साधारण कार्यक्रम को देखें:
स्ट्रिंग सरणी जावा में स्ट्रिंग जोड़ें
public class Program { public static void Main(string[] args) { using (SysObj so = new SysObj()) { Console.WriteLine('Inside using statement'); } Console.WriteLine('Outside of the using statement block'); } } class SysObj : IDisposable { public void Dispose() { Console.WriteLine('Dispose method'); } }
उत्पादन
उपरोक्त कार्यक्रम का आउटपुट:
बयान का उपयोग कर अंदर
निपटान विधि
उपयोग कथन ब्लॉक के बाहर
व्याख्या
उपरोक्त उदाहरण में, जब प्रोग्राम निष्पादित किया जाता है, तो पहले 'SysObj' उदाहरण को मेमोरी हीप में आवंटित किया जाता है। फिर उपयोग करने वाला ब्लॉक निष्पादन शुरू करता है और उस आउटपुट को प्रिंट करता है जिसे हमने कंसोल के अंदर परिभाषित किया है। अगला, जैसा कि स्टेटमेंट स्टेटमेंट का उपयोग खत्म हो जाता है, निष्पादन तुरंत डिस्पोज़ विधि में स्थानांतरित हो जाता है।
फिर कोड स्टेटमेंट ब्लॉक से बाहर निकल जाता है और बाहर स्टेटमेंट को कंसोल पर प्रिंट करता है।
सी # वर्चुअल विधि
एक आभासी विधि क्या है?
एक आभासी विधि एक वर्ग विधि है जो प्रोग्रामर को उसी वर्ग में एक विधि को ओवरराइड करने के लिए कार्यक्षमता प्रदान करती है जिसमें एक ही हस्ताक्षर होता है। OOPs वातावरण में बहुरूपता प्रदर्शन करने के लिए मुख्य रूप से आभासी तरीकों का उपयोग किया जाता है।
एक आभासी विधि में व्युत्पन्न और आधार दोनों वर्गों में कार्यान्वयन हो सकता है। यह मुख्य रूप से उपयोग किया जाता है जब उपयोगकर्ता को व्युत्पन्न वर्ग में अधिक कार्यक्षमता की आवश्यकता होती है।
एक आभासी विधि पहले एक बेस क्लास में बनाई जाती है और फिर इसे व्युत्पन्न वर्ग में ओवरराइड किया जाता है। 'वर्चुअल' कीवर्ड का उपयोग करके बेस क्लास में एक वर्चुअल मेथड बनाया जा सकता है और उसी विधि को 'ओवरराइड' कीवर्ड का उपयोग करके व्युत्पन्न क्लास में ओवरराइड किया जा सकता है।
आभासी तरीके: याद करने के लिए कुछ बिंदु
- व्युत्पन्न वर्ग में वर्चुअल विधि में वर्चुअल कीवर्ड होता है और व्युत्पन्न वर्ग में विधि में ओवरराइड कीवर्ड होना चाहिए।
- यदि किसी विधि को आधार वर्ग में एक आभासी विधि के रूप में घोषित किया जाता है, तो यह हमेशा व्युत्पन्न वर्ग द्वारा उस पद्धति को ओवरराइड करने के लिए आवश्यक नहीं होता है, यानी व्युत्पन्न वर्ग में एक वर्चुअल विधि को ओवरराइड करने के लिए इसका विकल्प।
- यदि किसी विधि में आधार और व्युत्पन्न वर्ग दोनों में समान परिभाषा है, तो विधि को ओवरराइड करने की आवश्यकता नहीं है। ओवरराइड केवल तभी आवश्यक है जब दोनों की एक अलग परिभाषा हो।
- ओवरराइडिंग विधि हमें एक ही विधि के लिए एक से अधिक रूपों का उपयोग करने की अनुमति देती है, इसलिए यह बहुरूपता को भी दर्शाता है।
- सभी विधियां डिफ़ॉल्ट रूप से गैर-आभासी हैं।
- एक वर्चुअल मॉडिफ़ायर को प्राइवेट, स्टेटिक या एब्सट्रैक्ट मॉडिफायर के साथ एक साथ इस्तेमाल नहीं किया जा सकता है।
वर्चुअल कीवर्ड का उपयोग C # में क्या है?
C # में वर्चुअल कीवर्ड का उपयोग आवश्यकता के आधार पर उसके व्युत्पन्न वर्ग में बेस क्लास सदस्य को ओवरराइड करने के लिए किया जाता है।
मुझे अपना नेटवर्क सुरक्षा कुंजी कहां मिल सकता है
बेस क्लास में वर्चुअल मेथड को निर्दिष्ट करने के लिए एक वर्चुअल कीवर्ड का उपयोग किया जाता है और उसी सिग्नेचर वाली विधि जिसे व्युत्पन्न क्लास में ओवरराइड करने की आवश्यकता होती है, ओवरराइड कीवर्ड से पहले होती है।
सार विधि और आभासी विधि के बीच अंतर
वर्चुअल विधियों में कार्यान्वयन होता है और व्युत्पन्न वर्ग को इसे ओवरराइड करने की अनुमति मिलती है जबकि अमूर्त विधि किसी भी कार्यान्वयन की पेशकश नहीं करती है और यह प्रोग्रामर को व्युत्पन्न वर्ग में ओवरराइड विधियों को लिखने के लिए मजबूर करती है।
इसलिए, सरल शब्दों में, अमूर्त विधियों का उनके अंदर कोई कोड नहीं है जबकि आभासी पद्धति का अपना कार्यान्वयन है।
वर्चुअल और ओवरराइड के बीच अंतर C # में
वर्चुअल कीवर्ड आमतौर पर विधि, संपत्ति, आदि के हस्ताक्षर के बाद होता है और इसे व्युत्पन्न वर्ग में ओवरराइड करने की अनुमति देता है। ओवरराइड कीवर्ड का उपयोग व्युत्पन्न वर्ग में उसी विधि / संपत्ति हस्ताक्षर के साथ किया जाता है जैसा कि आधार वर्ग में व्युत्पन्न वर्ग में ओवरराइड प्राप्त करने के लिए किया जाता है।
क्या वर्चुअल विधि को C # में ओवरराइड करना अनिवार्य है?
कंपाइलर प्रोग्रामर्स को वर्चुअल मेथड को ओवरराइड करने के लिए कभी लागू नहीं करेगा। वर्चुअल विधि को ओवरराइड करने के लिए हमेशा व्युत्पन्न वर्ग द्वारा इसकी आवश्यकता नहीं होती है।
उदाहरण
परीक्षण मामले और परीक्षण योजना के बीच अंतर
आइए आभासी तरीकों के बारे में अधिक स्पष्ट रूप से समझने के लिए एक उदाहरण देखें।
इस उदाहरण में, हम बेस क्लास में दो अलग-अलग तरीकों का उपयोग कर रहे हैं, पहला गैर-वर्चुअल तरीका है और दूसरा वर्चुअल कीवर्ड के साथ एक वर्चुअल तरीका है। इन दोनों विधियों को व्युत्पन्न वर्ग में ओवरराइड किया जाएगा।
आइए हम एक नजर:
कार्यक्रम
using System; public class Program { public static void Main(string[] args) { calculate calc = new calculate (); numbers nmbr = calc; calc.addition(); nmbr.addition(); calc.subtraction(); nmbr.subtraction(); } } public class numbers { public void addition(){ Console.WriteLine('This is addition method'); } public virtual void subtraction(){ Console.WriteLine('This is subtraction method'); } } public class calculate : numbers { public void addition(){ Console.WriteLine('This is addition method in the derived class'); } public override void subtraction(){ Console.WriteLine('This is subtraction method override in derived class'); } }
उत्पादन
उपरोक्त कार्यक्रम का आउटपुट है:
यह व्युत्पन्न वर्ग में जोड़ विधि है
यह जोड़ विधि है
यह व्युत्पन्न विधि व्युत्पन्न वर्ग में ओवरराइड है
यह व्युत्पन्न विधि व्युत्पन्न वर्ग में ओवरराइड है
व्याख्या
उपरोक्त उदाहरण में, हमारे पास दो वर्ग हैं अर्थात् संख्या और गणना। आधार वर्ग संख्या में दो विधियाँ हैं अर्थात् जोड़ और घटाव जहाँ जोड़ एक गैर-आभासी विधि है और घटाव एक आभासी विधि है। इसलिए, जब हम इस कार्यक्रम को निष्पादित करते हैं तो बेस क्लास वर्चुअल विधि 'जोड़' को व्युत्पन्न वर्ग गणना में ओवरराइड किया जाता है।
एक अन्य वर्ग 'प्रोग्राम' में, हम व्युत्पन्न वर्ग की गणना का एक उदाहरण बनाने के लिए एक प्रवेश बिंदु बनाते हैं और फिर हम बेस क्लास के उदाहरण ऑब्जेक्ट के लिए एक ही उदाहरण प्रदान करते हैं।
जब हम आभासी और गैर-आभासी तरीकों को वर्ग उदाहरणों का उपयोग करके कॉल करते हैं, तब हम देखते हैं कि आभासी पद्धति को दोनों उदाहरणों का उपयोग करके ओवरराइड किया गया है, जबकि गैर-वर्चुअल पद्धति केवल व्युत्पन्न वर्ग को कॉल करते समय ओवरराइड किया गया था।
निष्कर्ष
C # में उपयोग कथन मुख्यतः संसाधन प्रबंधन के लिए उपयोग किया जाता है। उपयोग कथन किसी वस्तु के अस्तित्व के लिए एक सशर्त सीमा को परिभाषित करता है।
एक बार जब निष्पादन स्टेटमेंट ब्लॉक से बाहर चला जाता है, तो यह स्टेटमेंट ब्लॉक के अंदर बनाई गई किसी भी वस्तु को नष्ट करने की रूपरेखा बताता है। कथन के अंदर परिभाषित कोड को भी। ऑब्जेक्ट के लिए परिभाषित ऑब्जेक्ट को कॉल करने के लिए .Net फ्रेमवर्क को अनुमति देने के लिए एक IDisposable इंटरफ़ेस लागू करना चाहिए।
एक आभासी विधि उपयोगकर्ता को व्युत्पन्न वर्ग में एक विधि को ओवरराइड करने की अनुमति देती है जिसमें आधार वर्ग में विधि के समान हस्ताक्षर होते हैं। आभासी पद्धति का उपयोग ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग भाषाओं में बहुरूपता को प्राप्त करने के लिए किया जा सकता है।
एक आभासी विधि मुख्य रूप से तब उपयोग की जाती है जब व्युत्पन्न वर्ग में अतिरिक्त कार्यक्षमता की आवश्यकता होती है। वर्चुअल तरीके निजी स्थिर या सार नहीं हो सकते। इसे आधार वर्ग में एक आभासी खोजशब्द का उपयोग करके परिभाषित किया गया है और व्युत्पन्न वर्ग में खोजशब्द को ओवरराइड किया जाता है।
=> यहाँ गहराई में सी # प्रशिक्षण ट्यूटोरियल देखें
अनुशंसित पाठ
- उदाहरणों के साथ अजगर डेटाइम ट्यूटोरियल
- सेलेनियम उदाहरणों के साथ पाठ ट्यूटोरियल द्वारा तत्व का पता लगाएं
- MongoDB सॉर्ट () उदाहरण के साथ विधि
- MongoDB क्वेरी दस्तावेज़ का उपयोग कर खोजें () विधि (उदाहरण)
- उदाहरणों के साथ MongoDB में कर्सर का उपयोग
- C # क्लासेस और ऑब्जेक्ट: उदाहरणों के साथ एक गहन गहराई वाला ट्यूटोरियल
- उदाहरणों के साथ यूनिक्स शैल स्क्रिप्टिंग ट्यूटोरियल
- कोड उदाहरणों के साथ C # अपवाद हैंडलिंग ट्यूटोरियल