C # में, usingबयान का उपयोग एक निर्धारित तरीके से निपटाने के लिए किया जाता है, बिना कचरा कलेक्टर की प्रतीक्षा किए। उदाहरण के लिए, इसका उपयोग किया जा सकता है:
SQL कमांड या कनेक्शन का निपटान करें,
बंद धाराओं, एक फ़ाइल की तरह अंतर्निहित स्रोत को मुक्त करना,
मुफ्त GDI + तत्व,
आदि।
मैंने देखा कि usingउन मामलों में अधिक से अधिक उपयोग किया जाता है जहां निपटान के लिए कुछ भी नहीं है, लेकिन जहां कॉल करने वाले के लिए usingदो अलग-अलग आदेशों के बजाय एक ब्लॉक लिखना अधिक सुविधाजनक है ।
उदाहरण:
मिनीप्रोफाइलर , स्टैक ओवरफ्लो टीम द्वारा लिखित,
usingब्लॉक को प्रोफाइल को दर्शाने के लिए उपयोग करता है:using (profiler.Step("Name goes here")) { this.DoSomethingUseful(i - 1); }एक वैकल्पिक दृष्टिकोण में दो ब्लॉक होंगे:
var p = profiler.Start("Name goes here"); this.DoSomethingUseful(i - 1); profiler.Stop(p);कार्यों का उपयोग करने के लिए एक और तरीका होगा:
profiler.Step("Name goes here", () => this.DoSomethingUseful(i - 1));ASP.NET MVC ने
usingफॉर्म भी लिए:<% using (Html.BeginForm()) { %> <label for="firstName">Name:</label> <%= Html.TextBox("name")%> <input type="submit" value="Save" /> <% } %>
क्या ऐसा उपयोग उचित है? इसे कैसे उचित ठहराया जाए, यह देखते हुए कि कई कमियां हैं:
शुरुआती लोग खो जाएंगे, क्योंकि इस तरह का उपयोग उन लोगों के अनुरूप नहीं है जिन्हें पुस्तकों और भाषा विनिर्देश में समझाया गया है,
कोड अभिव्यंजक होना चाहिए। यहां, अभिव्यक्तता ग्रस्त है, क्योंकि उचित उपयोग
usingयह दिखाने के लिए है कि पीछे, एक संसाधन है, जैसे एक धारा, एक नेटवर्क कनेक्शन या एक डेटाबेस जो कचरा कलेक्टर का इंतजार किए बिना जारी किया जाना चाहिए।
using: बाद वाला बयान (जैसेprofiler.Stop(p)) अपवादों और नियंत्रण प्रवाह के सामने निष्पादित होने की गारंटी नहीं है।