
तुलना चार्ट
तुलना के लिए आधार | मुक्केबाज़ी | बॉक्स से निकालना |
---|---|---|
बुनियादी | ऑब्जेक्ट प्रकार मान प्रकार को संदर्भित करता है। | बॉक्सिंग ऑब्जेक्ट से मान प्राप्त करने की प्रक्रिया। |
भंडारण | स्टैक पर संग्रहीत मान हीप मेमोरी पर संग्रहीत ऑब्जेक्ट पर कॉपी किया जाता है। | ढेर मेमोरी पर संग्रहीत ऑब्जेक्ट का मान स्टैक पर संग्रहीत मान प्रकार पर कॉपी किया जाता है। |
रूपांतरण | निष्प्राण रूपांतरण। | स्पष्ट रूपांतरण। |
उदाहरण | int n = 24; वस्तु ob = n; | int m = (int) ob; |
बॉक्सिंग की परिभाषा
बॉक्सिंग एक वैल्यू टाइप को ऑब्जेक्ट टाइप में बदलने की एक प्रक्रिया है। यहां, मान प्रकार स्टैक पर संग्रहीत किया जाता है, और ऑब्जेक्ट प्रकार ढेर मेमोरी में संग्रहीत होता है। वस्तु प्रकार के मूल्य प्रकार का यह रूपांतरण एक अंतर्निहित रूपांतरण है। आप किसी ऑब्जेक्ट को सीधे मान दे सकते हैं, और C # बाकी रूपांतरण को हैंडल करेगा। आइए बॉक्सिंग को एक उदाहरण से समझते हैं।

int i = 24; ऑब्जेक्ट ओब = मैं; // पूर्णांक प्रकार n को ऑब्जेक्ट प्रकार ob में बॉक्स करें। या ऑब्जेक्ट ob1 = 21; // यहाँ भी एक ऑब्जेक्ट प्रकार ob1 एक पूर्णांक प्रकार को संदर्भित करता है
उपरोक्त कोड में, पूर्णांक प्रकार I जिसमें मूल्य 24 होता है, स्टैक पर संग्रहीत होता है और इसे ऑब्जेक्ट प्रकार के ऑब्जेक्ट में कॉपी किया जाता है। ऑब्जेक्ट प्रकार अब पूर्णांक मान की बात कर रहा है। अब, "int i" में मान 24 भी हैं और "ऑब्जेक्ट प्रकार ob" में भी मान 24 हैं, लेकिन दोनों मान एक दूसरे से स्वतंत्र हैं अर्थात यदि आप i का मान बदलते हैं, तो यह परिवर्तन को प्रतिबिंबित नहीं करेगा मूल्य का मान।
बॉक्सिंग में अतिरिक्त समय के साथ-साथ अतिरिक्त मेमोरी की खपत होती है। कारण यह है कि एक नई वस्तु, जो मूल्य प्रकार को संदर्भित करेगी, को ढेर पर मेमोरी स्पेस आवंटित करना होगा। इसके बाद, स्टैक पर संग्रहीत मान प्रकार के मान को ऑब्जेक्ट प्रकार, ढेर स्मृति स्थान पर स्थानांतरित करने के लिए स्थानांतरित किया जाएगा।
अनबॉक्सिंग की परिभाषा
बॉक्सिंग का उल्टा बॉक्सिंग है। Unboxing वस्तु प्रकार का मान प्रकार में रूपांतरण है। अनबॉक्सिंग में हीप पर संग्रहीत बॉक्सिंग ऑब्जेक्ट प्रकार का मान स्टैक पर संग्रहीत मान प्रकार पर स्थानांतरित किया जाता है। बॉक्सिंग के विपरीत, अनबॉक्सिंग को स्पष्ट रूप से किया जाना चाहिए। वस्तु प्रकार स्पष्ट रूप से मूल्य प्रकार के लिए डाला जाता है, और मूल्य प्रकार उसी प्रकार होना चाहिए जिस वस्तु प्रकार का संदर्भ है। आइए एक उदाहरण के साथ अनबॉक्सिंग की अवधारणा को समझते हैं।

int i = 24; ऑब्जेक्ट ओब = मैं; // पूर्णांक प्रकार n को ऑब्जेक्ट प्रकार ob में बॉक्स करें। int j = (int) ob; // ऑब्जेक्ट प्रकार में संग्रहीत पूर्णांक मान को पूर्णांक प्रकार y के अनुसार।
ऑब्जेक्ट ऑब्जेक्ट में संग्रहित मान को उसी प्रकार कास्टिंग करके प्राप्त किया जाता है, जैसा ऑब्जेक्ट ऑब्जेक्ट के लिए संदर्भित कर रहा है जैसे कि "पूर्णांक"।
अनबॉक्सिंग में अधिक मेमोरी और अधिक समय भी खर्च होता है। चूंकि, जब किसी ऑब्जेक्ट प्रकार को अनबॉक्स करना होता है तो ढेर पर संग्रहीत ऑब्जेक्ट प्रकार के मूल्य को स्टैक पर संग्रहीत नए मूल्य प्रकार में स्थानांतरित करना पड़ता है। ऑब्जेक्ट प्रकार जिसका मान पुनः प्राप्त कर लिया गया है, अब कचरा संग्रहण के लिए उपलब्ध होगा।
बॉक्सिंग और अनबॉक्सिंग के बीच महत्वपूर्ण अंतर
- बॉक्सिंग में, एक ऑब्जेक्ट को वैल्यू टाइप के रूप में संदर्भित करने के लिए बनाया जाता है। दूसरी ओर, बॉक्सिंग ऑब्जेक्ट से मूल्य वापस प्राप्त करने की प्रक्रिया को अनबॉक्सिंग कहा जाता है।
- स्टैक पर संग्रहीत मान प्रकार को ढेर मेमोरी पर संग्रहीत ऑब्जेक्ट पर कॉपी किया जाता है। दूसरी ओर, अनबॉक्सिंग में, ढेर मेमोरी पर संग्रहीत ऑब्जेक्ट को स्टैक मेमोरी पर संग्रहीत मान प्रकार पर कॉपी किया जाता है।
- बॉक्सिंग एक निहित रूपांतरण है, जबकि अनबॉक्सिंग एक स्पष्ट रूपांतरण है।
निष्कर्ष:
मुक्केबाजी और अनबॉक्सिंग दोनों अधिक समय और स्मृति का उपभोग करते हैं, और वे कम्प्यूटेशनल रूप से महंगे हैं। उनके पास टाइप सुरक्षा में भी कमी है और रनटाइम ओवरहेड बढ़ता है। कार्यक्रम में बॉक्सिंग और अनबॉक्सिंग के बहुत अधिक उपयोग से बचने के लिए हमेशा सलाह दी जाती है।