解构赋值 – C#中变量的对象属性
JavaScript有一个很棒的function,您可以使用一条简洁的线条从对象的属性中分配多个变量。 它被称为在ES6中添加的解构赋值语法。
// 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#中执行此操作的语法?
可以帮助你的最近的东西是元组。
C#7可能会有这样的东西:
public (int sum, int count) Tally(IEnumerable 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#6有很多新的酷语法function,但不幸的是不支持你的问题中描述的解构 – https://github.com/dotnet/roslyn/wiki/New-Language-Features-in-C%23-6