如何在C#7中返回多个值?

Cod*_*bie 56 .net c# c#-7.0

一个队友告诉我,在C#7.0中,可能会从本机返回多个值.任何人都能提供一些例子吗?谢谢

Sid*_*Sid 137

原来是什么意思?

Actualy C#7有一个非常有用的新功能,它允许您从方法返回多个值,这要归功于元组类型元组文字.

考虑以下功能:

(string, string, string) MyCoolFunction() // tuple return type
{   
    //...        
    return (firstValue, secondValue, thirdValue);
}
Run Code Online (Sandbox Code Playgroud)

哪个可以这样使用:

var values = MyCoolFunction();
var firstValue = values.Item1;
var secondValue = values.Item2;
var thirdValue = values.Item3;
Run Code Online (Sandbox Code Playgroud)

或者通过使用解构语法

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

//...

var (first, second, third) = MyCoolFunction(); //Implicitly Typed Variables
Run Code Online (Sandbox Code Playgroud)

花些时间查看文档,他们有一些非常好的例子(这个答案是基于它们的!).

  • 如果有错误`预定义类型"System.ValueTuple'2'没有定义或imported`,看看这里:[stackoverflow.com/a/38383064/789423](/sf/answers/2686814511/ ) (9认同)
  • 还值得指出的是,您也可以命名返回值,这使您可以按任何顺序对其进行解构。 (4认同)

use*_*943 21

你在寻找元组.这是一个例子:

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}");
Run Code Online (Sandbox Code Playgroud)

http://www.thomaslevesque.com/2016/07/25/tuples-in-c-7/偷来的例子