Что, если таковые имеются, есть разница между?
decimal d = (decimal) myDouble;
decimal d = new decimal(myDouble);
decimal d = Convert.ToDecimal(myDouble);
Что, если таковые имеются, есть разница между?
decimal d = (decimal) myDouble;
decimal d = new decimal(myDouble);
decimal d = Convert.ToDecimal(myDouble);
Нет никакой разницы. Если вы посмотрите на источник:
В десятичной системе:
public static explicit operator decimal(double value)
{
return new decimal(value);
}
В Конвертировать:
public static decimal ToDecimal(float value)
{
return (decimal) value;
}
Итак, в конце концов все они звонят new decimal(double)
.
Все они добиваются одинаковых результатов. Однако здесь объясняется более сложное объяснение:
Метод 1 создает новую переменную, которая явно вводит myDouble
для ввода decimal
. Когда вы произносите, вы говорите: "Этот объект типа A на самом деле является объектом типа B-производным от-A или существует оператор литья, чтобы отличать A от B".
Метод 2 создает новую переменную, которая преобразует myDouble
в соответствующий тип (decimal
) через перегрузку конструктора. Когда вы вызываете конструктор, вы говорите: "Создайте новый объект на основе аргументов, переданных в конструктор".
Метод 3 преобразует базовый тип данных (double
) в другой базовый тип данных (decimal
).
Когда вы используете что-то вроде Convert.ToDecimal()
, вы говорите: "Этот объект не относится к типу B, но существует способ превратить его в объект типа B".
Относительно Convert
MSDN заявляет:
Существует метод преобразования для преобразования каждого базового типа в любой другой базовый тип. Однако фактическая операция преобразования относится к трем категориям:
Преобразование из типа в себя просто возвращает этот тип. Фактически не выполняется преобразование.
Нет никакой разницы, фактически, с функциональной точки зрения. Это разные способы достижения такого же результата.
Важно, чтобы в случае Convert.ToDecimal у вас есть возможность указать формат IFormatProvider (культура), чтобы вы получили больше гибкость.
Если вы не заботитесь о мультикультурной среде, выберите любой из них, который вам нравится.