On Monday, 5 August 2013 at 17:45:25 UTC, Bosak wrote:
You say that D's destroy is not like C#'s IDisposable.Then why doesn't D then declare that kind of interface:
interface Disposable {
    void dispose();
}

It _is_ similar but not exact match. 2 key differences:
1) destroy works on variety of types, not only classes
2) it puts the object into some invalid state
But you can still use class destructor instead of `dispose()` method.

But destroy() is considered a power tool that should be used only when absolutely needed. The very necessity to deterministically call some method opposes the concept of garbage collection - it is a sign of bad design and clear indicator that one should do a proper RAII here. I really think D approach here is much cleaner than C# one.

Reply via email to