Подтвердить что ты не робот

Как вернуть несколько значений в С# 7?

Помощник команды сказал мне, что в С# 7.0 можно возвращать несколько значений из функции изначально. Может ли кто-нибудь привести пример? Благодаря

4b9b3361

Ответ 1

Что ты имеешь в виду?

Actualy С# 7 имеет очень полезную новую функцию, которая позволяет возвращать более одного значения из метода благодаря типам кортежей и литералам кортежа.

Рассмотрим следующую функцию:

(string, string, string) MyCoolFunction() // tuple return type
{   
    //...        
    return (firstValue, secondValue, thirdValue);
}

Что можно использовать следующим образом:

var values = MyCoolFunction();
var firstValue = values.Item1;
var secondValue = values.Item2;
var thirdValue = values.Item3;

Или с помощью синтаксиса деконструкции

(string first, string second, string third) = MyCoolFunction();

//...

var (first, second, third) = MyCoolFunction(); //Implicitly Typed Variables

Потратьте некоторое время, чтобы проверить Документация, у них есть несколько очень хороших примеров (этот ответ основан на на них!).

Ответ 2

Вы ищете Кортежи. Это пример:

static (int count, double sum) Tally(IEnumerable<double> values)
{
    int count = 0;
    double sum = 0.0;
    foreach (var value in values)
    {
        count++;
        sum += value;
    }
    return (count, sum);
}

...

var values = ...
var t = Tally(values);
Console.WriteLine($"There are {t.count} values and their sum is {t.sum}");

Пример украден из http://www.thomaslevesque.com/2016/07/25/tuples-in-c-7/

Ответ 3

Вы также можете реализовать следующее:

public class Program
{
    public static void Main(string[] args)
    {

        var values=GetNumbers(6,2);
        Console.Write(values);


    }

    static KeyValuePair<int,int> GetNumbers(int x,int y)
    {
        return new KeyValuePair<int,int>(x,y);
    }
}