With statement become like C#'s using?

Bosak bosak at gmail.com
Mon Aug 5 11:46:39 PDT 2013


On Monday, 5 August 2013 at 18:29:09 UTC, Dicebot wrote:
> 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.

Well I don't know much stuff about GC and internals and if you 
think it is not a good design concept, ok I'm fine with it. I 
don't "miss" C#'s using statement or IDisposable. I was just 
giving a suggestion that would be discussed and considered with 
the community.

At least this with(declaration) syntax might make it into the 
language. And probably use the more "strange" one, where you only 
give it an rvalue:
with(new Foo) {
     name = "Foo"; //same as temp.name
     calc(); //same as temp.calc()
     writeln(); //and even maybe this to be translated to 
temp.writeln() and then to writeln(temp) ?
}

Well that was everything I had to say about with, using, and 
dispose. I'm glad that there was a discussion going.


More information about the Digitalmars-d mailing list