間違ったコンマ区切り記号を使用しているか、double値を指定しているときに他のエラーが発生した可能性があります。とにかく、そのような場合は、例外の観点から安全で、フォーマットプロバイダー、基本的にはカルチャーを使用できるDouble.TryParse()メソッドを使用する必要があります。
public static bool TryParse(
string s,
NumberStyles style,
IFormatProvider provider,
out double result
)
TryParseメソッドは、Parse(String、NumberStyles、IFormatProvider)メソッドに似ていますが、変換が失敗した場合にこのメソッドが例外をスローしない点が異なります。変換が成功すると、戻り値はtrueになり、結果パラメーターは変換の結果に設定されます。変換が失敗した場合、戻り値はfalseになり、結果パラメーターはゼロに設定されます。
編集:コメントへの回答
if(!double.TryParse(Console.ReadLine(), out unitPrice))
{
// parse error
}else
{
// all is ok, unitPrice contains valid double value
}
また、試すことができます:
double.TryParse(Console.ReadLine(),
NumberStyle.Float,
CultureInfo.CurrentCulture,
out unitPrice))