Как вводить double с возможным/разрешённым значением Null?

мне нужно разрешить пустой ввод для дальнейшей проверки. я пробовал следующие методы, но в кжадом ошибка:

double? X= double?.Parse(Console.ReadLine());

double bag = Convert.ToDouble(Console.ReadLine(), ArgumentNullException);

Ответы (2 шт):

Автор решения: aepot

Если не удалось распарсить double, то будет присвоено null.

double? number = double.TryParse(Console.ReadLine(), out double n) ? n : (double?)null;

Но решение странное, double? в основном используют для десереализации данных, полученных извне. Для данных, полученных из консоли можно реализовать простую логику с ветвлением.

Console.Write("Введите число: ")
if (double.TryParse(Console.ReadLine(), out double number))
{
    Console.WriteLine($"Вы ввели число {number}.");
}
else
{
    Console.WriteLine($"Не удалось распознать число.");
}
→ Ссылка
Автор решения: VladD

Я бы воспользовался такой функцией:

static double? InputNumber() => Console.ReadLine() switch
{
    null => throw new EndOfStreamException("No more input lines"),
    "" => null,
    var s when double.TryParse(s, out var d) => d,
    var s => throw new FormatException($"Unrecognized value: {s}")
};

Обоснование: если ввод неправильный (не пустая строка и не число), имеет смысл возвращать не null, а строго сообщать об ошибке. Иначе неправильный ввод (например, число с неправильным десятичным разделителем) будет ошибочно распознан как валидный null.

→ Ссылка