Почему я не могу спроецировать ToString () в VB?

Если вы попытаетесь скомпилировать приведенный ниже запрос в Visual Basic .NET, это не удастся.

From x In {1, 2} Select x.ToString()

Ошибка, выданная компилятор:

Имя переменной диапазона не может соответствовать имени члена класса 'Object'.

Нет ничего плохого в эквивалентном запросе C #, однако:

from x in new[]{1, 2} select x.ToString()

Этого не происходит с ] ToString перегрузка, которая принимает формат (это член Int32, а не Object). Это действительно происходит с другими членами Object, если они не принимают аргумент: с GetType и GetHashCode он не работает; с Equals (объект) он компилируется.

Почему действует это ограничение и какие альтернативы я могу использовать?

18
задан R. Martinho Fernandes 10 January 2011 в 12:48
поделиться