जब आप एक फ़ॉर्म या एक उपयोगकर्ता नियंत्रण बनाने के लिए, WinForms डिजाइनर एक निपटाने विधि है कि इस तरह दिखता है उत्पन्न करता है:WinForms डिजाइनर अपनी निपटान विधि में कुछ हद तक 'असुविधाजनक' कोड क्यों उत्पन्न करता है?
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
इस कोड के साथ समस्या अगर यह कभी करने के लिए संपादित किया जाता है कि यह गलत व्यवहार हो सकता है है अतिरिक्त वस्तुओं का निपटान। मैं निपटाने तरीकों कि इस तरह दिखना साथ .designer.cs फ़ाइलों को देखा है:
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
if (_myDisposable != null)
_myDisposable.Dispose();
if (_myOtherDisposable != null)
_myOtherDisposable.Dispose();
}
base.Dispose(disposing);
}
... जो गलत है, के रूप में _myDisposable और _myOtherDisposable के निपटान किया जाए या नहीं घटकों पर निर्भर नहीं रहना चाहिए रिक्त है।
तो, इस डिजाइनर जेनरेट कोड को संपादित करने के लिए यह अच्छा अभ्यास है या नहीं, इस तथ्य को अनदेखा कर रहा है कि आप टेम्पलेट्स को संपादित करके इसे बदल सकते हैं, मेरा सवाल यह है: डिजाइनर कोड क्यों उत्पन्न नहीं करता है यह इस तरह दिखता है?
protected override void Dispose(bool disposing)
{
if (disposing)
{
if(components != null)
components.Dispose();
}
base.Dispose(disposing);
}
इस कोड का एक ही अंत परिणाम है, लेकिन संशोधन के दौरान त्रुटियों के लिए सुरक्षित और कम प्रवण है।
पहला और तीसरा कोड ब्लॉक (लगभग) समान है। या क्या मैं कुछ न कुछ भूल रहा हूं? –
@ एर्नो - आप सही हैं, क्योंकि '&&' शॉर्ट सर्किट होगा। – Oded
तो कोई सवाल नहीं है (चम्मच)? –