【发布时间】:2017-12-23 18:38:27
【问题描述】:
我指的是这里描述的元组文字:https://blogs.msdn.microsoft.com/dotnet/2016/08/24/whats-new-in-csharp-7-0/#comment-321926
喜欢元组文字的想法。
但是,我预见到需要大量查找 返回元组中项目的顺序,并且想知道我们如何解决这个问题。
例如,将元组中的项目名称作为身份定义方面而不是顺序不是更有意义吗?或者有没有办法做到这一点,我没有看到?
例如:假设 NextEmployee() 是一些我没有源代码的库方法,也没有特别详细的文档记录,假设它返回 (firstname: “jamie”, lastname: “hince”, id: 102348) 给我,我说:
(string lastname, var _, int __) = NextEmployee(); // I only need the last name
编译器会愉快地将名字分配给姓氏,或者发出警告或错误。为什么不将姓氏映射到姓氏?
如果我们不必记住元组中姓氏的索引,我会看到允许更松散耦合的架构,并且可以只要求像这样的“姓氏”方面。
【问题讨论】:
-
不,小心!字段的顺序很重要,而不是名称。编译器将
(firstname: “jamie”, lastname: “hince”, id: 102348)转换为(Item1: “jamie”, Item2: “hince”, Item3: 102348)。你真的不能通过名称访问字段,这都是编译器糖 -
元组只是变量的包。您描述的是 C# 8 中的 records
标签: tuples language-features c#-7.0 valuetuple