Подтвердить что ты не робот

Зачем использовать Decimal.Multiply vs operator multiply?

decimal result = 100 * 200;

против

decimal result = Decimal.Multiply(100, 200);
4b9b3361

Ответ 1

Использование Decimal.Multiply заставит умножить принимать входные данные типа decimal вместо того, что используется, и преобразуется в decimal.

Decimal.Multiply(decimal d1, decimal d2) и будет обеспечивать и выводить тип decimal. Где в качестве * вы могли бы сделать:

decimal result = yourDecimal * yourInt; 

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

Ответ 2

Оператор * перегружен и вызывает Multiply внутренне. Это действительно вопрос читаемости.

Ответ 3

Оператор * перегружен для десятичных типов и он идентичен Decimal.Multiply(). Однако перегруженный оператор * требует, чтобы по крайней мере один из параметров был десятичным. В противном случае вызывается другой оператор *. В decimal result = 100 * 200 типы int сначала умножаются, а затем преобразуются в десятичные. Если результат умножения больше, чем Int32.MaxValue, вы получите переполнение.

decimal d1 = 2147483647 * 2; // Overflow
decimal d2 = 2147483647m * 2; // OK
decimal d3 = Decimal.Multiply(2147483647, 2); // OK

Ответ 4

Некоторые языки не поддерживают перегруженные операторы; они должны вызывать метод Multiply().

Ответ 5

Не требуется, чтобы язык .NET напрямую поддерживал десятичные знаки, но на таком языке вы все равно можете использовать структуру System.Decimal. Поскольку также не требуется, чтобы оператор поддержки языка .NET был переопределен, методы необходимы для полного использования в таком случае.