IDisposable and using in C#
C# interview exercise on Exceptions & Disposal, difficulty 3 of 3. Solve it in the editor beside a worked example; the tests run the moment you do.
Write Recorder(log): constructing it appends "open" to the log, and Dispose appends "close". Dispose may be called more than once and must only record "close" the first time. Because `using` runs Dispose even when the block throws, "close" is always recorded.
Each exercise pairs a worked example with a twin problem to solve in a real editor; the tests run the moment you do. Progress is saved in your browser, and in your account if you sign in.