คำถามของคุณเกี่ยวกับว่าคุณควรโทรหาหรือไม่มักDispose
จะเป็นการถกเถียงกันอย่างดุเดือด ดูบล็อกนี้สำหรับมุมมองที่น่าสนใจจากบุคคลที่เคารพนับถือในชุมชน. NET
โดยส่วนตัวแล้วฉันคิดว่าจุดยืนของเจฟฟรีย์ริกเตอร์ที่เรียกว่าDispose
ไม่บังคับนั้นอ่อนแออย่างไม่น่าเชื่อ เขายกตัวอย่างสองตัวอย่างเพื่อแสดงความคิดเห็นของเขา
ในตัวอย่างแรกเขากล่าวว่าการเรียกDispose
ใช้ตัวควบคุม Windows Forms นั้นน่าเบื่อและไม่จำเป็นในสถานการณ์หลัก อย่างไรก็ตามเขาไม่ได้พูดถึงว่าDispose
คอนเทนเนอร์ควบคุมถูกเรียกโดยอัตโนมัติในสถานการณ์หลักเหล่านั้น
ในตัวอย่างที่สองเขาระบุว่านักพัฒนาซอฟต์แวร์อาจสันนิษฐานอย่างไม่ถูกต้องว่าIAsyncResult.WaitHandle
ควรกำจัดอินสแตนซ์จากเชิงรุกโดยไม่ทราบว่าคุณสมบัติเริ่มต้นการจัดการการรออย่างเกียจคร้านส่งผลให้เกิดการลงโทษด้านประสิทธิภาพโดยไม่จำเป็น แต่ปัญหาของตัวอย่างนี้คือIAsyncResult
ตัวเองไม่ปฏิบัติตามแนวทางที่เผยแพร่ของ Microsoft ในการจัดการกับIDisposable
วัตถุ นั่นคือถ้าระดับเก็บการอ้างอิงไปยังประเภทแล้วชั้นเองควรใช้IDisposable
IDisposable
หากIAsyncResult
ปฏิบัติตามกฎนั้นDispose
วิธีการของตัวเองก็สามารถตัดสินใจได้ว่าสมาชิกที่เป็นส่วนประกอบใดจำเป็นต้องกำจัด
ดังนั้นถ้าไม่มีใครมีข้อโต้แย้งที่น่าสนใจกว่านี้ฉันจะอยู่ในค่าย "มักเรียกทิ้ง" ด้วยความเข้าใจว่าจะมีบางกรณีที่ส่วนใหญ่เกิดจากตัวเลือกการออกแบบที่ไม่ดี
using
โครงสร้าง