Recherche…


Remarques

Il n'y a pas de réponse inhérente en C # à ce - dit - besoin. Néanmoins, il existe des solutions de rechange pour satisfaire ce besoin.

La raison pour laquelle je qualifie le besoin de "soi-disant" est que nous avons seulement besoin de méthodes avec 2 ou plus de 2 valeurs lorsque nous violons les principes de programmation corrects. Surtout le principe de la responsabilité unique .

Par conséquent, il serait préférable d'être alerté lorsque nous avons besoin de fonctions renvoyant 2 valeurs ou plus et améliorant notre conception.

"objet anonyme" + solution "mot clé dynamique"

Vous pouvez retourner un objet anonyme à partir de votre fonction

public static object FunctionWithUnknowReturnValues ()
{
    /// anonymous object
    return new { a = 1, b = 2 };
}

Et attribuez le résultat à un objet dynamique et lisez-y les valeurs.

/// dynamic object
dynamic x = FunctionWithUnknowReturnValues();

Console.WriteLine(x.a);
Console.WriteLine(x.b);

Solution tuple

Vous pouvez retourner une instance de la classe Tuple partir de votre fonction avec deux paramètres de modèle tels que Tuple<string, MyClass> :

public Tuple<string, MyClass> FunctionWith2ReturnValues ()
{
    return Tuple.Create("abc", new MyClass());
}

Et lisez les valeurs comme ci-dessous:

Console.WriteLine(x.Item1);
Console.WriteLine(x.Item2);

Paramètres Ref et Out

Le mot-clé ref est utilisé pour transmettre un argument en tant que référence . out fera la même chose que ref mais il ne nécessite pas de valeur assignée par l'appelant avant d'appeler la fonction.

Paramètre de référence : -Si vous voulez passer une variable en tant que paramètre ref, vous devez l'initialiser avant de le transmettre en tant que paramètre ref à la méthode.

Paramètre Out: - Si vous voulez passer une variable avec le paramètre out, vous n'avez pas besoin de l'initialiser avant de le passer comme paramètre out à la méthode.

static void Main(string[] args)
{
    int a = 2;
    int b = 3;
    int add = 0;
    int mult= 0;
    AddOrMult(a, b, ref add, ref mult); //AddOrMult(a, b, out add, out mult);
    Console.WriteLine(add); //5
    Console.WriteLine(mult); //6
}

private static void AddOrMult(int a, int b, ref int add, ref int mult) //AddOrMult(int a, int b, out int add, out int mult)
{
    add = a + b;
    mult = a * b;
}


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow