12
การใช้ IDisposable และ "ใช้" เป็นวิธีการในการรับ "พฤติกรรมที่กำหนดขอบเขต" เพื่อความปลอดภัยในทางที่ผิดหรือไม่
สิ่งที่ฉันมักใช้ใน C ++ คือการปล่อยให้คลาสAจัดการกับการเข้าสู่สถานะและเงื่อนไขการออกสำหรับคลาสอื่นBผ่านตัวAสร้างและตัวทำลายเพื่อให้แน่ใจว่าหากบางสิ่งในขอบเขตนั้นเกิดข้อยกเว้น B จะมีสถานะที่ทราบเมื่อ ออกจากขอบเขตแล้ว นี่ไม่ใช่ RAII ที่บริสุทธิ์เท่าที่ใช้ตัวย่อ แต่เป็นรูปแบบที่กำหนดไว้ ใน C # ฉันมักจะต้องการทำ class FrobbleManager { ... private void FiddleTheFrobble() { this.Frobble.Unlock(); Foo(); // Can throw this.Frobble.Fiddle(); // Can throw Bar(); // Can throw this.Frobble.Lock(); } } ซึ่งต้องทำแบบนี้ private void FiddleTheFrobble() { this.Frobble.Unlock(); try { Foo(); // Can …
112
c#
exception-handling
raii