Мне просто интересно ... Почему C# не допускает множественные возвращаемые значения?Почему C# не допускает множественные возвращаемые значения?
В настоящий момент мы выражаем намерение вернуть несколько значений через возврат класса или используя out
- как показано ниже.
static void Check(MyTask task)
{
if (GoodReasonsNotTo(task))
{
throw new ApplicationException("There are good reasons not to do this.");
}
}
public static int UglyDo(MyTask task, out string response)
{
Check(task);
//...
response = "Done";
return 7;
}
static void Main(string[] args)
{
var task = new MyTask("Add multiple return values");
string response;
var err = UglyDo(task, out reponse));
}
Код выше может быть выражена по-разному:
static void Check(MyTask task)
{
if (GoodReasonsNotTo(task))
{
throw new ApplicationException("There are good reasons not to do this.");
}
}
public static (int, string) PrettyDo(MyTask task)
{
Check(task);
//...
return 7, "Done.";
}
static void Main(string[] args)
{
var task = new MyTask("Add multiple return values");
var (err, response) = PrettyDo(task);
}
Есть ли что-нибудь особенное возвращаемых значений против параметров функции? То же самое, они делают то же самое. Почему они не стали равными?
Кроме того, может ли он поддержать его в будущем?
BTW. Синтаксис синтаксиса StackOverflow имеет дело с этим красиво - это, безусловно, означает, что это будет хорошо.
Я думаю, что язык программирования Go на самом деле имеет это. – EJoshuaS
Возможно, потому, что существуют другие способы достижения того же, например. используйте небольшой класс с 2 членами или Tuple <>. Все эти новые вещи делают C# труднее читать для людей, которые, например, имеют фон C++. –