क्या कोई चर ".NET भाषा में स्कोप खो देता है जैसे ही स्वचालित रूप से" अंतिम रूप से "अंतिम रूप देने/विनाशक कोड चलाने का कोई तरीका है? ऐसा लगता है कि चूंकि कचरा कलेक्टर अनिश्चित समय पर चलता है, इसलिए जैसे ही परिवर्तक गुंजाइश खो देता है, विनाशक कोड नहीं चलाया जाता है। मुझे एहसास है कि मैं आईडीस्पोजेबल से उत्तराधिकारी हो सकता हूं और स्पष्ट रूप से कॉल कर सकता हूं, मेरी ऑब्जेक्ट पर निपटान करें, लेकिन मैं उम्मीद कर रहा था कि गैर-ऑफ-सॉल्यूशन हो सकता है, जिस तरह से गैर- नेट सी ++ ऑब्जेक्ट विनाश को संभालता है।जब कोई ऑब्जेक्ट स्कोप से बाहर हो जाता है तो कोड चलाया जा सकता है .Net?
वांछित व्यवहार (सी #):
public class A {
~A { [some code I would like to run] }
}
public void SomeFreeFunction() {
SomeFreeSubFunction();
// At this point, I would like my destructor code to have already run.
}
public void SomeFreeSubFunction() {
A myA = new A();
}
कम वांछनीय:
public class A : IDisposable {
[ destructor code, Dispose method, etc. etc.]
}
public void SomeFreeFunction() {
SomeFreeSubFunction();
}
public void SomeFreeSubFunction() {
A myA = new A();
try {
...
}
finally {
myA.Dispose();
}
}
(+1) ध्यान दें कि "उपयोग" निपटान विधि का उपयोग करने के लिए शॉर्टेंड है और विशेष रूप से विनाशक का उपयोग करने और स्मृति से वस्तु को हटाने के लिए नहीं है। –