Mic*_*ael 18
它是新元组语法的一部分 - 它与Tuple <>类无关 - 而是从函数式编程中获取.
考虑这个课程:
public class User
{
public string Username { get; }
public string FirstName { get; }
public string LastName { get; }
public User(string username, string firstName, string lastName)
{
// initialize properties
}
public void Deconstruct(out string username, out string firstName, out string lastName)
{
// initialize out parameters
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
var user = new User("foobaa", "foo", "baa");
Run Code Online (Sandbox Code Playgroud)
代替
var username = user.Username;
var firstName = user.FirstName;
var lastName = user.LastName;
Run Code Online (Sandbox Code Playgroud)
要么
string username, firstName, lastName;
user.Deconstruct(out username, out firstName, out lastName);
Run Code Online (Sandbox Code Playgroud)
你可以写:
var (username, firstName, lastName) = user;
var fullName = $"{firstName} {lastName}";
Run Code Online (Sandbox Code Playgroud)
更新
它可能用于的另一个例子,这只是推测,我没有尝试过这个,与模式匹配一起.
var users = new Dictionary<string, User>
{
{"john", new User("jom", "John", "Malkovich") }
}
Run Code Online (Sandbox Code Playgroud)
C#6
User user;
users.TryGetValue("john", out user);
Run Code Online (Sandbox Code Playgroud)
C#7模式匹配
users.TryGetValue("john", out User user);
Run Code Online (Sandbox Code Playgroud)
C#7解构
users.TryGetValue("john", out (username, firstname, lastname));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4878 次 |
| 最近记录: |