もしあれば、違いは何ですか?
decimal d = (decimal) myDouble;
decimal d = new decimal(myDouble);
decimal d = Convert.ToDecimal(myDouble);
違いはありません。ソースを見ると:
10進数:
public static explicit operator decimal(double value)
{
return new decimal(value);
}
変換中:
public static decimal ToDecimal(float value)
{
return (decimal) value;
}
したがって、最終的にはすべてが呼び出しますnew decimal(double)
。
それらはすべて同じ結果を達成します。ただし、ここにもっと詳細な説明があります:
メソッド1myDouble
は、タイプに明示的にキャストする新しい変数を作成しますdecimal
。キャストすると、 「このタイプAのオブジェクトは、実際にはタイプBから派生したオブジェクトであるか、AをBにキャストするためのキャスト演算子が存在します」と言っています。
方法2は、コンストラクターのオーバーロードを介してmyDouble
適切な型( )に変換する新しい変数を作成します。decimal
コンストラクターを呼び出すと、「コンストラクターに渡された引数に基づいて新しいオブジェクトを作成する」ということです。
方法3は、基本データ型(double
)を別の基本データ型()に変換しdecimal
ます。のようなものを使用するConvert.ToDecimal()
と、「このオブジェクトはタイプBではありませんが、タイプBのオブジェクトにする方法があります」と言っています。
Convert
MSDNの状態について:
すべての基本タイプを他のすべての基本タイプに変換するための変換方法があります。ただし、実行される実際の変換操作は、次の3つのカテゴリに分類されます。
タイプからそれ自体への変換は、単にそのタイプを返します。実際には変換は行われません。
実際には、機能的な観点からは違いはありません。これらは、同じ結果を達成するためのさまざまな方法です。
Convert.ToDecimalの場合、フォーマットIFormatProvider(culture)を指定できるため、柔軟性が向上することを明記することが重要です。
多文化環境を気にしない場合は、好きなものを選んでください。