80 votes

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

191voto

Sid Points 5659

Qu'entendez-vous par nativement?

Effectivement C# 7 dispose d'une nouvelle fonctionnalité qui vous permet de revenir plus d'une valeur à partir d'une méthode grâce à un tuple types et n-uplet de littéraux.

Considérons la fonction suivante:

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

Qui peut être utilisée comme ceci:

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

Ou à l'aide de la déconstruction de la syntaxe

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

//...

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

Prenez le temps de consulter la Documentation, ils ont quelques très bons exemples (cette réponse est l'un sont basés sur eux!).

26voto

user2657943 Points 732

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é à http://www.thomaslevesque.com/2016/07/25/tuples-in-c-7/

-3voto

Maganjo Points 49

Vous pouvez aussi implémenter comme ceci:

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X