Default()
जेनिक्स का समर्थन करने के लिए पेश किया गया एक अनियंत्रित आंतरिक कार्य है। डेल्फी जेनेरिकों का डिज़ाइन बहुत से .NET जेनेरिक द्वारा प्रेरित था और आपको .net: https://msdn.microsoft.com/en-GB/library/xwth0h0d.aspx
Default()
का उद्देश्य आपको एक चर प्रारंभ करने के लिए डिफ़ॉल्ट रूप से अनुमति देने के लिए है। जेनेरिक प्रकारों के साथ काम करते समय Default()
आपको ऐसे चर के लिए ऐसा करने की अनुमति देता है जिसका प्रकार सामान्य है।
आप को दोहराने के लिए Default()
के व्यवहार निम्न कार्य करें:
Finalize(Inst);
FillChar(Inst, SizeOf(Inst), 0);
Finalize
करने के लिए कॉल के मामले में की जरूरत है प्रकार किया जाता है। ऐसा होता है कि प्रकार प्रबंधित होता है, या प्रबंधित किए गए किसी भी सदस्य को शामिल किया जाता है। प्रबंधित प्रकारों में तार, गतिशील सरणी, इंटरफेस, वेरिएंट, अज्ञात विधियां इत्यादि शामिल हैं
यदि प्रकार में प्रबंधित प्रकार नहीं होते हैं तो Finalize
पर कॉल छोड़ा जा सकता है। हालांकि इसे शामिल करने में कोई दिक्कत नहीं होती है, क्योंकि यदि आवश्यक नहीं है तो संकलक इसे खत्म कर देगा। यदि आप 100% निश्चित हो सकते हैं कि किसी प्रबंधित प्रकार को कोई मान निर्दिष्ट नहीं किया गया है तो आप उस कॉल को भी छोड़ सकते हैं। सांख्यिक प्रकार के लिए
स्रोत
2016-07-15 10:12:32
यह प्रबंधित प्रकारों के क्षेत्रों को भी अंतिम रूप देता/प्रारंभ करता है। –
@LURD, मैं "प्रारंभिक" भाग को समझ सकता हूं। लेकिन यह चर वैरिएबल को कब करता है? उदाहरण के लिए – zig
@zig, गतिशील सरणी और डंक से स्मृति साफ़ करना, यदि हटाया गया रिकॉर्ड अंतिम संदर्भ था। एक और उदाहरण 'इंटरफेस' प्रकार संदर्भ-गिनती वस्तुओं को अनलिंक कर रहा है। docwiki.embarcadero.com/Libraries/XE7/en/System देखें। –