2016-03-02 4 views
9

JavaScriptには、簡潔な行を1つ使用してオブジェクトのプロパティから複数の変数を割り当てることができる素敵な機能があります。これは、ES6で追加されたdestructuring assignmentという構文です。C#の変数への代入 - オブジェクトプロパティの分解オブジェクト

// New object 
var o = {p1:'foo', p2:'bar', p3: 'baz'}; 
// Destructure 
var {p1, p2} = o; 
// Use the variables... 
console.log(p1.toUpperCase()); // FOO 
console.log(p2.toUpperCase()); // BAR 

私はC#と同様のことをしたい。

// New anonymous object 
var o = new {p1="foo", p2="bar", p3="baz"}; 
// Destructure (wrong syntax as of C#6) 
var {p1, p2} = o; 
// Use the variables... 
Console.WriteLine(p1.ToUpper()); // FOO 
Console.WriteLine(p2.ToUpper()); // BAR 

C#でこれを行う構文はありますか?

答えて

11

最も近いものを。 discussion

public (int sum, int count) Tally(IEnumerable<int> values) 
{ 
    var res = (sum: 0, count: 0); // infer tuple type from names and values 
    foreach (var value in values) { res.sum += value; res.count++; } 
    return res; 
} 


(var sum, var count) = Tally(myValues); // deconstruct result 
Console.WriteLine($"Sum: {sum}, count: {count}"); 

リンクは今、それは不可能です。

C#7は多分このようなものを持っています。

+3

も参照[提案された機能](https://github.com/dotnet/roslyn/blob/future/docs/features/patterns.md#user-content-destructuring-assignment) –

+1

[the提案された機能](https://github.com/dotnet/roslyn/blob/features/patterns/docs/features/patterns.md#destructuring-assignment) – styfle

+1

うん、C#7.0は分解をサポートする:https://blogs.msdn。 microsoft.com/dotnet/2016/08/24/whats-new-in-csharp-7-0/#user-content-deconstruction – paulie4

関連する問題