web-dev-qa-db-fra.com

Comment retourner plusieurs valeurs en C # 7?

Un coéquipier m'a dit qu'en C # 7.0, il est possible de renvoyer plusieurs valeurs d'une fonction en mode natif. Quelqu'un peut-il donner un exemple? Merci

53
Coder Newbie

Que voulez-vous dire par en natif ?

Actuellement, C # 7 a une nouvelle fonctionnalité très utile qui vous permet de renvoyer plus d’une valeur d’une méthode à l’aide de types de tuple et Tuple littéraux .

Considérons la fonction suivante:

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

Qui peut être utilisé comme ceci:

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

Ou en utilisant la syntaxe de déconstruction

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

//...

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

Prenez le temps de consulter Documentation , ils ont de très bons exemples (celui de cette réponse est basé sur eux!) .

127
Sid

Vous cherchez des tuples. Ceci est un exemple:

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}");

Exemple volé de http://www.thomaslevesque.com/2016/07/25/tuples-in-c-7/

20
user2657943