自从 C# 7 引入值元组,是否有比元组更适合的有意义的场景?
例如,以下行:
collection.Select((x, i) => (x, i)).Where(y => arr[y.i].f(y.x)).ToArray();
使以下行
collection.Select((x, i) => new {x, i}).Where(y => arr[y.i].f(y.x)).ToArray();
冗余。
在什么情况下,一个比另一个更好地使用(出于性能或优化方面的原因)?
显然,如果需要超过六个字段,元组不能使用,但是是否有一些更微妙的东西呢?
new {x, i}
让人完全清楚地知道正在返回一个新对象,而我必须比较这两个示例才能弄清楚第一个示例的作用。但也许只是我自己的问题。 - stelioslogothetis(x, i)
具有未命名的元组元素,但在C# 7.1中它们被隐式命名。 - Jon Skeet