Как вы можете видеть в документации C#, мы можем написать нулевой оператор объединения с выражением throw, как показано ниже
public string Name
{
get => name;
set => name = value ??
throw new ArgumentNullException(paramName: nameof(value), message: "Name cannot be null");
}
Но во многих случаях мне нужен оператор возврата, если левое значение равно нулю, например, как показано ниже
public double CalculateSomthing(ClassType someInstance)
{
var someValue = someInstance?.Value ?? return double.NaN;
// Call some method
AnyMethod(someValue);
// Some Computation
return someValue + 17;
}
Но я знаю, что не могу написать код, подобный приведенному выше, и у меня вопрос: почему? почему разработчик языка C# разрешает писать выражение throw с нулевым оператором объединения, но не разрешает использовать оператор return с оператором объединения?
Есть ли между ними какая-либо внутренняя разница?
Есть ли какое-либо близкое решение, подобное приведенному выше примеру, в существующей версии C#? или мне нужно написать стандартный код, как показано ниже
public double CalculateSomthing(ClassType someInstance)
{
var someValue = someInstance?.Value;
if (someValue == null) return double.NaN; // Boiler plate
// Call some method
AnyMethod(someValue);
// Some Computation
return someValue + 17;
}
Подробнее здесь: https://stackoverflow.com/questions/579 ... -statement