有没有更好的方法使用 var 目标变量在 C# 7 中选择命名元组?我一定是在示例 1 中做错了什么,或者完全误解了某些内容。我似乎必须显式设置目标类型才能执行此操作。
//1. Fails to compile with "incorrect number of type parameters" issue.
var tuples = source.Select<(int A, int B)>(x => (x.A, x.B));
//2. Compiles
IEnumerable<(int A, int B)> tuples = toCheck.Select(x => (x.A, x.B));
//3. Compiles
var tuples = new HashSet<(int A, int B)>(source.Select(x => (x.A, x.B)));
你可以只使用var
,但您需要确保元组元素确实被命名。
在 C# 7.0 中,您需要显式执行此操作:
var tuples = source.Select(x => (A: x.A, B: x.B));
foreach (var tuple in tuples)
{
Console.WriteLine($"{tuple.A} / {tuple.B}");
}
在 C# 7.1 中,当从属性或字段获取元组文字中的值时,该标识符将隐式为元素名称,因此您可以编写:
var tuples = source.Select(x => (x.A, x.B));
foreach (var tuple in tuples)
{
Console.WriteLine($"{tuple.A} / {tuple.B}");
}
See the 专题文档 https://github.com/dotnet/csharplang/blob/master/proposals/csharp-7.1/infer-tuple-names.md有关兼容性等的更多详细信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)