Изменение параметра C # Out более одного раза - PullRequest
0 голосов
/ 07 мая 2019

Если у вас есть функция с параметром out, лучше ли создавать новую переменную внутри функции и назначать ей параметр out в конце функции?Или задайте для параметра out какое-нибудь пустое значение / значение по умолчанию в начале и измените его во всей функции.

Я пытаюсь придумать некоторые соображения относительно того, почему один из этих стилей / методов кодирования лучше использовать.

Вариант 1: использование только параметра out.

public bool SomeFunc(out string outStr)
{
   outStr = "";

   if (errorCond)
      return false;

   outStr += "foo";
   outStr += "bar";

   return true;
}

Вариант 2: использование временной переменной.

public bool SomeFunc1(out string outStr)
{
   string tempStr = "";
   outStr = "";      // To prevent 'The out parameter must be set' error on return false line.

   if (errorCond)
      return false;

   tempString += "foo";
   tempString += "bar";

   outStr = tempStr;
   return true;
}

Даже при том, что оба они достигают одного и того же результатачто предпочтительнее?Есть ли недостатки у одного из них?

1 Ответ

1 голос
/ 07 мая 2019

На самом деле, это не имеет значения, вы просто должны назначить переменную в этом методе.Но предпочтительно избегать использования выходных или ссылочных параметров :

Работа с элементами, которые определяют или ссылаются на параметры, требует, чтобы разработчик понимал указатели, тонкие различия между типами значений иссылочные типы и различия инициализации между исходящими и ссылочными параметрами.

Для меня второй - это накладные расходы

Назначьте значение по умолчанию в начале метода, а затем изменитезначение при необходимости.

Посмотрите примеры в исходных кодах .net, например int.TryParse или Enum.TryParse

...