Что в спецификации C# препятствует использованию ulong в бинарных операторах с плавающей запятой?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Что в спецификации C# препятствует использованию ulong в бинарных операторах с плавающей запятой?

Сообщение Anonymous »


Это непонятный вопрос для любителей языка C#.

Правила продвижения числовых значений для бинарных операторов перечислены здесь, и в них особо упоминается, что оператор для ulong и знакового целочисленного типа завершится ошибкой привязки.

Однако этот раздел также помечен как «Этот подраздел носит информативный характер». и насколько я понимаю, эти правила являются побочным эффектом обработки встроенных перегрузок операторов с использованием того же механизма разрешения перегрузок, который используется для разрешения вызовов методов.

Если это так, то что мешает бинарному оператору, скажем, ulong+int повыситься до float+float< /code> поскольку для обоих существует неявное приведение типов?

Например: вызов fn(float,float) возможен с помощью fn(intArg,ulongArg) – почему бы не использовать оператор?

Другими словами, какая «неинформативная» часть спецификации охватывает это правило? Может быть, в списке встроенных операторов есть что-то, обеспечивающее соблюдение этого правила, о чем я не знаю?

Думаю, я нашел подсказку в описании встроенных операторов, где целочисленные операторы, операторы с плавающей запятой и десятичные операторы перечислены и сгруппированы отдельно.

Это намекает на то, что набор возможных операторов основан на том, является ли операнд плавающей запятой или десятичным... но я не вижу, чтобы это где-либо явно упоминалось. В разделе «Разрешение перегрузки двоичных операторов» говорится только о том, что для встроенных операторов:

В противном случае предопределенные реализации бинарного оператора «op», включая их поднятые формы, станут набором операторов-кандидатов для операции. Предопределенные реализации данного оператора указаны в описании оператора.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»