我在看System.Collections.Generic.KeyValuePair<TKey, TValue>
结构体System.Runtime, Version=4.2.1.0
这个方法引起了我的注意。
这是签名:
public void Deconstruct(out TKey key, out TValue value);
除了简单转发之外还有什么逻辑吗Key
and Value
特性?为什么有人会更喜欢它而不是财产获取者?
解构是 C# 7 中主要针对值元组引入的一项功能,可让您“在单个操作中解包元组中的所有项目”。该语法已被通用化,使其也可用于其他类型。通过定义Deconstruct
方法,然后您可以使用简洁的解构语法将内部值分配给各个变量:
var kvp = new KeyValuePair<int, string>(10, "John");
var (id, name) = kvp;
您甚至可以通过定义这样的一个来将解构应用于您自己的用户定义类型Deconstruct
方法与out
参数和一个void
返回类型,如您的示例中所示。看解构用户定义类型 https://learn.microsoft.com/en-us/dotnet/csharp/deconstruct#deconstructing-user-defined-types.
Edit:虽然 .NET Framework 和 .NET Core 都支持 C# 7 解构语法,但KeyValuePair<TKey,TValue>.Deconstruct https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.keyvaluepair-2.deconstruct目前仅 .NET Core 2.0 及更高版本支持该方法。请参阅上一个链接中的“适用于”部分。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)