¿Cómo devolver múltiples valores en C # 7? [cerrado]


Un compañero de equipo me dijo que en C# 7.0 es posible devolver múltiples valores de una función de forma nativa. ¿Puede alguien dar algún ejemplo? Gracias

Author: Coder Newbie, 2017-03-21

3 answers

¿Qué quieres decir con de forma nativa?

Actualmente C# 7 tiene una nueva característica muy útil que le permite devolver más de un valor de un método gracias a tipos de tupla y literales de tupla.

Considere la siguiente función:

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

Que se puede usar así:

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

O usando sintaxis de deconstrucción

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

//...

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

Tómese un tiempo para comprobar la Documentación, tienen algunos ejemplos muy buenos (esto respuesta uno se basan en ellos!).

 90
Author: Sid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-21 12:05:52

Estás buscando Tuplas. Este es un ejemplo:

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

Ejemplo robado de http://www.thomaslevesque.com/2016/07/25/tuples-in-c-7/

 13
Author: user2657943,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-21 11:52:24

También puedes implementar de esta manera:

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);
    }
}
 0
Author: Maganjo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-21 12:45:56