... यदि मैं स्थानीय चर में एक आईडीस्पोजेबल का उपयोग करता हूं, लेकिन निपटान() को कॉल न करें या उपयोग() पैटर्न का उपयोग न करें।स्थानीय इस्तेमाल किए गए IDISposable के लिए कोई FxCop नियम है?
public void BadMethod()
{
var fs = new FileStream("file.txt", FileMode.Create);
fs.WriteByte(0x55);
// no dispose, no using()
}
फ़ील्ड के लिए "Types that own disposable fields should be disposable" नियम की तरह।
संपादित करें: FileStream द्वारा बदला MemoryStream, क्योंकि MemoryStream सिर्फ स्मृति आवंटित करता है और उपयोग नहीं करता है (अप्रबंधित) संसाधन है, तो किसी को एक अनिवार्य निपटान() कॉल के बारे में चर्चा कर सकते हैं।
आप ऐसा क्यों चाहते हैं? यह व्यर्थ है, स्मृति डिस्पोजेबल नहीं है। उम्मीद है कि हमें ऐसा टूल नहीं मिलेगा जो कहता है, यह प्रोग्रामर दिमाग को अपरिवर्तनीय रूप से नष्ट कर देगा। –
@nobugz: वास्तव में मेमोरीस्ट्रीम पर निपटने के लिए वास्तव में यहां उचित है। तथ्य यह है कि मेमोरीस्ट्रीम किसी भी अप्रबंधित संसाधनों का उपयोग नहीं करता है * एक कार्यान्वयन * विवरण है। मेमोरीस्ट्रीम के लिए ** कॉन्ट्रैक्ट ** कहता है कि यह आईडीस्पोज़ेबल लागू करता है, और इस तरह, इसे हमेशा निपटान करना चाहिए। विशिष्ट कार्यान्वयन विवरण के मुकाबले अनुबंध के खिलाफ कोड हमेशा * बेहतर होता है। – casperOne
@ कैप्सर: हाँ, कुछ प्रोग्रामर मशीन की तरह उन्हें बताने के लिए कि क्या करना है। यह एक धर्म है जिसका मैं सब्सक्राइब नहीं करता हूं, मैं जानबूझकर नियम को तोड़ना पसंद करता हूं। आगे बढ़ें और इसे अपना रास्ता दें, आप कभी गलत साबित नहीं होंगे। केवल सुस्त –