解构赋值 - C# 中变量的对象属性
Destructuring assignment - object properties to variables in C#
JavaScript 有一个漂亮的功能,您可以使用一个简洁的行从一个对象的属性中分配多个变量。它被称为 destructuring assignment 语法,是在 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<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}");
Link 到 discussion
目前还不可能。
C# 7 使用元组。你可以实现这样的目标。
您可以构造和销毁元组。 Snippet
var payLoad = (
Username: "MHamzaRajput",
Password: "password",
Domain: "www.xyz.com",
Age: "24"
);
// Hint: You just need to follow the sequence.
var (Username, Password, Domain, Age) = payLoad;
// or
var (username, password, _, _) = payLoad;
Console.WriteLine($"Username: {username} and Password: {password}");
输出
Username: MHamzaRajput and Password: password
JavaScript 有一个漂亮的功能,您可以使用一个简洁的行从一个对象的属性中分配多个变量。它被称为 destructuring assignment 语法,是在 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<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}");
Link 到 discussion
目前还不可能。
C# 7 使用元组。你可以实现这样的目标。
您可以构造和销毁元组。 Snippet
var payLoad = (
Username: "MHamzaRajput",
Password: "password",
Domain: "www.xyz.com",
Age: "24"
);
// Hint: You just need to follow the sequence.
var (Username, Password, Domain, Age) = payLoad;
// or
var (username, password, _, _) = payLoad;
Console.WriteLine($"Username: {username} and Password: {password}");
输出
Username: MHamzaRajput and Password: password