सी # using
कथन है, खासकर आईडीस्पोजेबल ऑब्जेक्ट्स के लिए। संभवतः, using
कथन में निर्दिष्ट किसी ऑब्जेक्ट में कुछ प्रकार का संसाधन होगा जो निर्धारित रूप से मुक्त किया जाना चाहिए।खराब अभ्यास? सी # के उपयोग कथन का गैर-कैनन उपयोग
हालांकि, मुझे लगता है कि प्रोग्रामिंग में कई डिज़ाइन हैं जिनमें एक एकल, निश्चित शुरुआत और अंत है, लेकिन आंतरिक भाषा समर्थन की कमी है। using
निर्माण कम से कम, स्पष्ट रूप से और स्वाभाविक रूप से ऐसे डिज़ाइन या ऑपरेशन के दायरे को हाइलाइट करने के लिए कोड संपादक की अंतर्निहित सुविधाओं का उपयोग करने का अवसर प्रदान करता है।
क्या मैं मन में है आपरेशन के प्रकार है कि अक्सर, एक BeginXXX()
और EndXXX()
विधि के साथ शुरू होता है, हालांकि इस तरह के एक अतुल्यकालिक कोड निष्पादन शामिल है कि एक "शुरू" और "शामिल हों" के रूप में विभिन्न जायके, के बहुत सारे हैं।
इस बेवकूफ उदाहरण को लें।
webDataOperation.Start();
GetContentFromHardDrive();
webDataOperation.Join();
// Perform operation that requires data from both sources
क्या होगा अगर, बजाय, प्रारंभ विधि एक वस्तु जिसका IDisposable.Dispose
विधि में शामिल होने के कार्रवाई निष्पादित लौट आए।
using(webDataOperation.Start()) {
GetContentFromHardDrive();
}
// Perform operation that requires data from both sources
या, बेहतर अभी तक, क्या मैं विशेष रूप से मन में था: मैं एक उद्देश्य यह है कि अति विशिष्ट ग्राफिक्स blitting करता है और एक Begin()
और End()
विधि (एक डिजाइन भी DirectX में वर्तमान और XNA) है है। इसके बजाय ...
using(blitter.BlitOperation()) {
// Do work
}
// Use result
यह अधिक प्राकृतिक और पठनीय हो रहा है, लेकिन यह अनुचित है, के रूप में यह IDisposable
इंटरफेस और अनायास ही उद्देश्यों के लिए using
कथन का उपयोग करती दिख रहे हैं? दूसरे शब्दों में, क्या यह एक गैर-सहज ज्ञान युक्त तरीके में ऑपरेटर को वर्लोड करने के बराबर होगा?
क्यों न केवल शुरुआत में {शुरुआत में}} का उपयोग करें? यह उपयोग करने के दुरुपयोग के बिना गुंजाइश प्रदान करता है। – cja