คำถามติดแท็ก using-statement

29
การใช้“ การใช้” ใน C # คืออะไร
ผู้ใช้kokosตอบคุณสมบัติที่ซ่อนอยู่ที่ยอดเยี่ยมของคำถามC #โดยกล่าวถึงusingคำหลัก คุณอธิบายรายละเอียดเกี่ยวกับเรื่องนั้นได้ไหม? มีประโยชน์usingอะไรบ้าง?



5
จะเกิดอะไรขึ้นถ้าฉันกลับมาก่อนสิ้นสุดการใช้งานคำสั่ง? จะเรียกขายทิ้งหรือไม่
ฉันมีรหัสต่อไปนี้ using(MemoryStream ms = new MemoryStream()) { //code return 0; } dispose()วิธีการที่เรียกว่าในตอนท้ายของusingคำสั่งวงเล็บ}ใช่มั้ย? เนื่องจากฉัน returnก่อนสิ้นสุดusingคำสั่งMemoryStreamวัตถุจะถูกกำจัดอย่างถูกต้องหรือไม่? เกิดอะไรขึ้นที่นี่?

12
Java มีคำสั่งใช้หรือไม่?
Java มีคำสั่งการใช้งานที่สามารถใช้เมื่อเปิดเซสชันในโหมดไฮเบอร์เนตหรือไม่? ใน C # เป็นสิ่งที่ชอบ: using (var session = new Session()) { } ดังนั้นวัตถุจึงอยู่นอกขอบเขตและปิดโดยอัตโนมัติ

5
การ“ ใช้” กับทรัพยากรมากกว่าหนึ่งรายการทำให้ทรัพยากรรั่วไหลได้หรือไม่
C # ให้ฉันทำสิ่งต่อไปนี้ (ตัวอย่างจาก MSDN): using (Font font3 = new Font("Arial", 10.0f), font4 = new Font("Arial", 10.0f)) { // Use font3 and font4. } จะเกิดอะไรขึ้นถ้าfont4 = new Fontพ่น? จากสิ่งที่ฉันเข้าใจว่า font3 จะทำให้ทรัพยากรรั่วไหลและจะไม่ถูกกำจัดทิ้ง นี่คือเรื่องจริง? (font4 จะไม่ถูกกำจัดทิ้ง) หมายความว่าusing(... , ...)ควรหลีกเลี่ยงโดยสิ้นเชิงเพื่อสนับสนุนการใช้ซ้อนกันหรือไม่?

3
Dispose ยังคงถูกเรียกเมื่อมีข้อยกเว้นอยู่ในคำสั่ง use?
ในตัวอย่างด้านล่างการเชื่อมต่อจะปิดและกำจัดเมื่อมีข้อยกเว้นเกิดขึ้นหากอยู่ในusingคำสั่ง? using (var conn = new SqlConnection("...")) { conn.Open(); // stuff happens here and exception is thrown... } ฉันรู้ว่ารหัสด้านล่างนี้จะทำให้แน่ใจว่าได้ แต่ฉันอยากรู้ว่าการใช้คำสั่งทำอย่างไร var conn; try { conn = new SqlConnection("..."); conn.Open(); // stuff happens here and exception is thrown... } // catch it or let it bubble up finally { conn.Dispose(); } …

1
ใช้งบและรอคำหลักเล่นอย่างดีใน c #
ฉันมีสถานการณ์ที่ฉันasyncโทรไปยังเมธอดที่ส่งคืนและIDisposableอินสแตนซ์ ตัวอย่างเช่น: HttpResponseMessage response = await httpClient.GetAsync(new Uri("http://www.google.com")); ก่อนหน้าasyncนี้อยู่ในที่เกิดเหตุเมื่อทำงานกับIDisposableอินสแตนซ์การโทรและรหัสที่ใช้ตัวแปร "response" นี้จะรวมอยู่ในคำสั่งใช้ คำถามของฉันคือยังคงเป็นแนวทางที่ถูกต้องหรือไม่เมื่อasyncคีย์เวิร์ดถูกโยนเข้าไปในส่วนผสม? แม้ว่าโค้ดจะคอมไพล์ แต่คำสั่งใช้จะยังคงทำงานตามที่คาดไว้ในทั้งสองตัวอย่างด้านล่างนี้หรือไม่ ตัวอย่าง 1 using(HttpResponseMessage response = await httpClient.GetAsync(new Uri("http://www.google.com"))) { // Do something with the response return true; } ตัวอย่าง 2 using(HttpResponseMessage response = await httpClient.GetAsync(new Uri("http://www.google.com"))) { await this.responseLogger.LogResponseAsync(response); return true; }
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.