Здравствуйте, VladD2, Вы писали:
VD>Почему не допускается объявления ссылочной переменной в инициализаторе цикла?
Вероятно, потому что
As I’m fond of pointing out, the answer to every question of the form “why doesn’t product X have feature Y?” is the same. It’s because in order for a product to have a feature, that feature must be:
thought of in the first place
desired
designed
specified
implemented
tested
documented
shipped to customers
You’ve got to hit every single one of those things, otherwise, no feature.
Здравствуйте, alexzzzz, Вы писали:
A>(с) Эрик Липперт
Это набор отмазок. Фичей это назвать нельзя. Просто в грамматике C# есть 3 места где можно объявлять локальные переменные:
1. Statment.
2. using
3. Инициализатор for.
Если в случае 2 ref может вызвать проблемы, то 3 ничем не отличается от 1. Это просто объявление переменной в области видимости.
Все что надо было сделать для ее поддержки — вызвать нужную функцию в нужном месте (добавить правило в грамматику).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Философ, Вы писали:
Ф>>Ух ты, а это в какой студии такое работает?
VD>Если интересуют фичи 7-го Шарпа, вот.
Из всех фишечек которые я там увидел, это самая полезная.
И полезно оно в основном для вот таких применений:
private A[] m_arrayOfA;
public ref A PropA0
{
get {return ref m_arrayOfA[0];}
}
PS: а вообще, это именно "фишечки"
Всё сказанное выше — личное мнение, если не указано обратное.
Здравствуйте, Философ, Вы писали:
Ф>Из всех фишечек которые я там увидел, это самая полезная.
Значит тебе еще есть куда расти в профессиональном плане.
Возможно потом поймаешь, что там все фичи полезные. Я ими уже 10 лет пользуюсь (точнее их улучшенными версиями из Nemerle) и, на мой взгляд, без них язык был очень неудобен. Особенно без паттерн-матчинга и локальных функций. Жаль, что их довольно ограниченно реализовали.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Почему не допускается объявления ссылочной переменной в инициализаторе цикла?
Есть подозрение, что связано с правилами определения single assignment restriction, но точного объяснения у меня нет. Если действительно важно — лучше в issues Roslyn-а спросить.
Здравствуйте, Sinix, Вы писали:
S>Есть подозрение, что связано с правилами определения single assignment restriction, но точного объяснения у меня нет. Если действительно важно — лучше в issues Roslyn-а спросить.
Мысль интересная. В принципе инициализатор цикла тоже один раз присваивается. Но может это для того, чтобы не вводить людей в заблуждение.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.