बस एक अनुमान:
हर वर्ग के लिए एक संदर्भ प्रकार अर्थ है कि स्मृति ढेर में आवंटित किया जाता है और फोन करने वाले सूचक के माध्यम से वास्तविक डेटा के लिए उपयोग हो जाता है। उदाहरण के लिए:
Customer c1 = new Customer('CUSTID'); // "Customer" is a reference type
Customer c2 = c1; // "c1" and "c2" points to the same memory within the heap
हर struct एक मान प्रकार अर्थ है कि स्मृति ढेर में आवंटित किया जाता है और फोन करने वाले वास्तविक उदाहरण के साथ के बजाय कि उदाहरण के संदर्भ में संबंधित है।उदाहरण के लिए:
Customer c1 = new Customer('CUSTID'); // "Customer" is a value type
Customer c2 = c1; // New memory gets allocated for "c2" within the stack
अपने उदाहरण को ध्यान में रखते: एक struct पर निम्नलिखित कार्यवाही संचालित करने
this = new Customer();
बस शून्य मूल्यों के साथ यह initializes:
mov eax,dword ptr [ebp-3Ch] ; Save pointer to "ebp-3Ch" in EAX register
xor edx,edx ; Clear EDX register
mov dword ptr [eax],edx ; Write "zero" by address containing in EAX
मैं क्यों यह नहीं है पता नहीं है संदर्भ प्रकारों के साथ संभव है लेकिन मेरा अनुमान है कि पूरे ऑब्जेक्ट ग्राफ़ को पूरी तरह से "रीसेट" करने की आवश्यकता होगी (जो एक आसान काम नहीं हो सकता है)। मुझे लगता है कि परिपत्र संदर्भों के मामले में यह मूल्यवान हो जाएगा।
फिर, यह सिर्फ मेरे विचार है और मैं किसी को भी साबित करने या त्यागने के लिए बहुत पसंद करता हूं (निश्चित रूप से, स्पष्टीकरण के साथ)।