Здравствуйте, raxxla, Вы писали:
R>R>void Method1()
R>{
R> object _obj=null;
R> IEnumerable _list = _obj is IDictionary ? ((IDictionary)_obj).Values : (IEnumerable)_obj;
R>}
R>
R>вызывает сразу три ошибки при попытке скормить его RSparser-у??
Эта проблема уже обсуждалась недавно (
http://rsdn.ru/Forum/Message.aspx?mid=1590718&only=1Автор: VladD2
Дата: 14.01.06
). В грамматике C# 2.0 есть LL(1)-конфликт.
"IDictionary ?" может рассматриваться как анонимный тип "IDictionary?", или как "( ... IDictionary) ? ... : ...".
Я пока не придумал красивого метода разрешения этого конфликта. По уму нужно писать нехилое заглядывание вперед, но это куча работы, а у меня нет времени. Кто хочет может заняться.
Пока что можно просто взять условие в скобки. То есть, вот так:
IEnumerable _list = (_obj is IDictionary) ? ((IDictionary)_obj).Values : ...
все должно работать нормально.
... << RSDN@Home 1.2.0 alpha rev. 637>>