Checked и unchecked 5 страница. float operator %(float x, float y); double operator %(double x, double y);
· Остаток для чисел с плавающей запятой: float operator %(float x, float y); В следующей таблице приведены результаты всех возможных комбинаций ненулевых конечных значений, нулей, бесконечных значений и ошибок NaN В таблице x и y — положительные конечные значения. z является результатом x % y и вычисляется как x – n * y, где n является максимальным возможным целым числом, меньшим или равным x / y. Этот метод вычисления остатка аналогичен методу, используемому для целых операндов, но отличается от определения по стандарту IEEE 754 (в котором n является целым числом, ближайшим к x / y).
· Остаток для десятичных чисел: decimal operator %(decimal x, decimal y); Если значение правого операнда равно нулю, возникает исключение System.DivideByZeroException. Масштаб результат до округления равен большему масштабу из двух операндов, а знак результата (если он не равен нулю) равен знаку x. Получение остатка для десятичных чисел эквивалентно использованию оператора остатка типа System.Decimal. 7.8.4 Оператор сложения; Для операции вида x + y чтобы выбрать конкретную реализацию оператора, применяется разрешение перегрузки бинарного оператора (§7.3.4). Операнды преобразуются в типы параметров выбранного оператора, а тип результата является типом возвращаемого значения этого оператора. Ниже перечислены стандартные операторы сложения. Для числовых типов и типов перечислений стандартные операторы сложения вычисляют сумму двух операндов. Когда один или оба операнда имеют строковый тип, стандартные операторы сложения выполняют сцепление строковых представлений операндов. · Сложение целых чисел: int operator +(int x, int y); В контексте checked если сумма выходит за пределы диапазона типа результирующего значения, возникает исключение System.OverflowException. В контексте unchecked о переполнениях не сообщается, и все старшие биты, выходящие за пределы диапазона результирующего значения, отбрасываются. · Сложение чисел с плавающей запятой: float operator +(float x, float y); Сумма вычисляется в соответствии с арифметическими правилами стандарта IEEE 754. В следующей таблице приведены результаты всех возможных комбинаций ненулевых конечных значений, нулей, бесконечных значений и ошибок NaN В таблице x и y являются ненулевыми конечными значениями, а z является результатом x + y. Если x и y имеют одинаковую величину, но противоположные знаки, то z равен положительному нулю. Если результат x + y слишком велик для представления в целевом типе, то z является бесконечным значением с таким же знаком, как и у x + y.
· Сложение десятичных чисел: decimal operator +(decimal x, decimal y); Если результирующее значение слишком велико для представления в формате decimal, то возникает исключение System.OverflowException. Масштаб результата до округления равен большему из масштабов двух операндов. Получение суммы десятичных чисел эквивалентно использованию оператора сложения типа System.Decimal. · Сложение элементов перечисления. В каждом типе перечисления неявно предоставляются следующие стандартные операторы, где E является типом перечисления, а U является базовым типом E: E operator +(E x, U y); Во время выполнения операторы вычисляются в точности как (E)((U)x + (U)y). · Сцепление строк: string operator +(string x, string y); These overloads of the binary + operator perform string concatenation. Если один операнд при сцеплении строк равен null, то подставляется пустая строка. Иначе любой нестроковый аргумент преобразуется в свое строковое представление путем вызова виртуального метода ToString, наследуемого от типа bject. Если метод ToString возвращает null, то подставляется пустая строка. using System; class Test Результатом оператора сцепления строк является строка, состоящая из символов левого операнда, за которыми следуют символы правого операнда. Оператор сцепления строк никогда не возвращает значение null. При отсутствии памяти для размещения результирующей строки может возникать исключение System.OutOfMemoryException. · Комбинация делегатов. В каждом типе делегата неявно предоставляется следующий стандартный оператор, где D имеет тип делегата: D operator +(D x, D y); Бинарный оператор + выполняет комбинацию делегатов, когда оба операнда имеют некоторый тип делегата D. (Если операнды имеют разные типы делегатов, возникает ошибка времени привязки.) Если первый операнд равен null, результат операции равен значению второго операнда (даже если оно также равно null). Иначе, если второй операнд равен null, то результатом операции является значение первого операнда. Иначе результатом операции является новый экземпляр делегата, который при вызове вызывает первый операнд, а затем второй операнд. Примеры комбинации операндов см. в разделах §7.8.5 и §15.4. Поскольку System.Delegate не является типом делегата, для него оператор + не определен. 7.8.5 Оператор вычитания; Для операции вида x – y, чтобы выбрать конкретную реализацию оператора, применяется разрешение перегрузки бинарного оператора (§7.3.4). Операнды преобразуются в типы параметров выбранного оператора, а тип результата является типом возвращаемого значения этого оператора.
|