Andrei Alexandrescu wrote:
<seewebsiteforem...@erdani.org> wrote:
using(Foo x = new Foo()) {
// do stuff
}
It's basically equiv of
{
auto x = new Foo();
scope(exit) foo.Dispose;
// do stuff
}
That's not an "equiv of". It's "completely missing the point of". Each
"using" costs one new scope and one level of indentation which makes it
non-scalable. Indentation is *expensive*. I think the C# folks missed
the class when try/catch/finally showed with extensive examples just how
expensive extra indentation is.
You can mitigate this somewhat by realizing that multiple usings can be
wrapped into only one indentation level. Like:
using (Bar bar = new Bar())
using (Foo foo = new Foo())
using (Jim jim = new Jim())
{
//do something
}
--
Joel Lucsy
"The dinosaurs became extinct because they didn't have a space program."
-- Larry Niven