web-dev-qa-db-ja.com

C#7で複数の値を返す方法は?

チームメイトから、C#7.0では関数からネイティブに複数の値を返すことができると言われました。誰かが例を提供できますか?ありがとう

53
Coder Newbie

nativelyとはどういう意味ですか?

Actualy C#7には、タプルタイプおよびタプルリテラルのおかげで、メソッドから複数の値を返すことができる非常に便利な新機能があります。

次の機能を検討してください。

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

次のように使用できます:

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

またはdeconstruction構文を使用して

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

//...

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

Documentation を確認するのに時間をかけてください。非常に良い例があります(この答えはそれらに基づいています!)。

127
Sid

タプルを探しています。これは一例です:

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

http://www.thomaslevesque.com/2016/07/25/tuples-in-c-7/ から盗まれた例

20
user2657943