Продолжаю непонимать C#. Теперь про операторы.
От: xvost Германия http://www.jetbrains.com/company/people/Pasynkov_Eugene.html
Дата: 25.05.05 17:10
Оценка:
Привет всем.

Вопрос из серии "Помогите РеШарперу"

Вопрос: почему компилируется код

enum E{A}

....
E e = E.A
IntPtr ptr = (IntPtr)e;


Если совсем конкретно — то почему компилируется выделенный cast.

Поясню вопрос: в стандарте языка C# параграф 6.4.3 сказано, что при вызове explicit conversion оператора его параметр должен преобразовываться неявно.

В IntPtr есть explicit operator IntPtr(int). В enum'е операторов нет. Enum к int'у неявно не приводится.

Более того, если написать что-то типа


struct S
{
  public static explicit operator S (int i) {....}
}


То выражение

S s = (S) e;


не скомпилируется.
С уважением, Евгений
JetBrains, Inc. "Develop with pleasure!"
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.