c# - सी#फॉर्म। बनाम बनाम फॉर्म। डिस्प्ले करें




winforms (3)

मैं सी # के लिए नया हूं, और मैंने पहले की पोस्ट देखने की कोशिश की लेकिन मुझे कोई अच्छा जवाब नहीं मिला।

एक सी # विंडोज फॉर्म एप्लिकेशन में एक ही फॉर्म के साथ, Form.Close() बेहतर या फॉर्म का उपयोग कर रहा है। Form.Dispose() ?

एमएसडीएन का कहना है कि ऑब्जेक्ट के भीतर सभी संसाधन बंद हैं और बंद होने पर फॉर्म का निपटारा किया जाता है। जिसके बावजूद, मैं कई उदाहरणों में ऑनलाइन आया हूं जो बंद होने की बजाय निपटान का पालन करते हैं।

क्या किसी के पास दूसरा फायदा है? किस परिदृश्य के तहत हम एक दूसरे को पसंद करते हैं?


उपयोग का using करना एक बहुत अच्छा तरीका है:

using (MyForm foo = new MyForm())
{
    if (foo.ShowDialog() == DialogResult.OK)
    {
        // your code
    }
}

एक सामान्य नियम के रूप में, मैं हमेशा किसी भी वर्ग के लिए निपटान विधि को स्पष्ट रूप से कॉल करने का समर्थन करता हूं, या तो विधि को कॉल करके या "उपयोग" ब्लॉक में लपेटकर।

अक्सर, आईडीएसओस्पिबल को लागू करने वाली कक्षाएं ऐसा इसलिए करती हैं क्योंकि वे कुछ अप्रबंधित संसाधन को लपेटते हैं जिन्हें मुक्त करने की आवश्यकता होती है। हालांकि इन वर्गों में फाइनलाइज़र होना चाहिए जो एक सुरक्षा के रूप में कार्य करते हैं, निपटान को बुलाए जाने से पहले उस स्मृति को और निचले ओवरहेड से मुक्त करने में मदद मिलेगी।

फॉर्म ऑब्जेक्ट के मामले में, क्यरा के लिंक के रूप में, बंद विधि को आपकी तरफ से निपटान करने के लिए दस्तावेज किया गया है, इसलिए आपको स्पष्ट रूप से ऐसा करने की आवश्यकता नहीं है। हालांकि, मेरे लिए, यह हमेशा एक कार्यान्वयन विस्तार पर भरोसा करने जैसा महसूस किया है। मैं उन क्रियाओं के लिए बंद और निपटान दोनों को हमेशा कॉल करना पसंद करता हूं जो उन्हें लागू करते हैं, कार्यान्वयन परिवर्तन / त्रुटियों के खिलाफ और स्पष्ट होने के लिए सुरक्षा के लिए। एक उचित ढंग से कार्यान्वित निपटान विधि कई बार आमंत्रित करने के लिए सुरक्षित होना चाहिए।


कॉलिंग नहीं करना संभवतः Win32 संदेशों का एक गुच्छा भेजना छोड़ देता है जो किसी को लगता है कि कुछ महत्वपूर्ण हैं हालांकि मैं आपको विशेष रूप से नहीं बता सकता ...

FormClosing को घटनाओं को बढ़ाने का लाभ होता है (जिसे रद्द किया जा सकता है) जैसे कि बाहरी व्यक्ति (फॉर्म में) FormClosing और FormClosed लिए देख सकता है ताकि तदनुसार प्रतिक्रिया दे सके।

मैं स्पष्ट नहीं FormClosing कि FormClosing और / या FormClosed उठाए गए हैं यदि आप केवल फॉर्म का निपटान करते हैं लेकिन मैं इसे प्रयोग करने के लिए छोड़ दूंगा।





winforms