EDIT: Первоначально этот пример сообщения имел дело с хеш-кодами, поэтому вы увидите некоторые комментарии, используя param.GetHashCode(), а не (1 + param). Чтобы получить больше информации, я изменил функции для вычисления одного плюс абсолютное значение некоторого числа.C# - Ограничение объема до трехзначного оператора
Предположим, что я хочу создать функцию, которая вычисляет абсолютное значение некоторого целого числа (без использования Math.Abs). Я мог бы написать что-то подобное:
int absoluteValueOfOnePlus(int param)
{
int onePlusParam= 1 + param;
return ((onePlusParam> 0) ? (onePlusParam) : (-onePlusParam));
}
Я ищу, чтобы ограничить сферу onePlusParm в рамках трехкомпонентной заявления - что-то похожее на:
int absoluteValueOfOnePlus(intparam)
{
return (((int onePlusParam = 1 + param) > 0) ? (onePlusParam) : (-onePlusParam));
}
Я понимаю, что это не действует C# , но он служит хорошим примером того, что я пытаюсь выполнить, - создайте переменную, которая существует только в области тройного оператора.
«Я ищу, чтобы сжать этот метод вниз одна линия". Можете ли вы объяснить причину, почему вам нужно это делать? – openshac
вы можете сделать 'int i; return i = param.GetHashCode()> 0? i: -i; '... Я бы не мог, но мог. –
@openshac, это больше о возможности ограничения, чем о чем-либо еще. Если бы функция была намного больше, я бы существовал во всей остальной функции. Использование объявления в тернарном выражении ограничило бы область видимости внутри ternary - после завершения инструкции i будет удалена. –