ใน C # usingคำสั่งจะถูกใช้เพื่อกำจัดทรัพยากรอย่างไม่ถูกต้องโดยไม่ต้องรอการเก็บขยะ ตัวอย่างเช่นอาจใช้เพื่อ:
กำจัดคำสั่งหรือการเชื่อมต่อ SQL
ปิดสตรีมปล่อยแหล่งข้อมูลอ้างอิงเช่นไฟล์
องค์ประกอบ GDI + ฟรี
เป็นต้น
ฉันสังเกตเห็นว่าusingมีการใช้งานมากขึ้นในกรณีที่ไม่มีสิ่งใดที่จะกำจัด แต่ที่มันสะดวกกว่าสำหรับผู้โทรที่จะเขียนusingบล็อกแทนที่จะเป็นสองคำสั่งแยกกัน
ตัวอย่าง:
MiniProfilerเขียนโดยทีม Stack Overflow ใช้
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)) ไม่รับประกันว่าจะถูกดำเนินการเมื่อเผชิญกับข้อยกเว้นและโฟลว์การควบคุม