Здравствуйте, Sinix, Вы писали:
Вместе с using static будет примерно так:
S>S>var a = Eval(() => { using (var x = GetX()) return x.y; });
S>
Ну в целом да
Обойти понятно можно. Просто выглядит чуть искусственно.
Про возврат нескольких переменных, так всеми желаемый PM и т.п. — имхо нужна просто возможность тонкой настройки области видимости переменной, очень много решит.
https://roslyn.codeplex.com/discussions/552375 вариант с out, хотя сейчас я мб уже к какой-нибудь нормальной директиве типа using в объявлении.
object x = Foo();
if(
x is A
&&
{
//Компилятор сам переносит объявление куда нужно
#using(var a, SCOPES_OUTER) = 5;
return true;
}
)
{
Console.WriteLine("{0}", a);
}
Определять тип в var из первого присваивания.
#using(var a, INFERENCE_LAZY);
a = 5;
склоняюсь для разнообразия. Не то чтобы оно было часто надо, но имхо одной фичей бы убили много зайцев. И в IDE анализировать возможные not initialized проще имхо.