KeyValuePair <> struct中Deconstruct方法的目的是什么?

ast*_*tef 2 c# c#-7.0

我正在看System.Collections.Generic.KeyValuePair<TKey, TValue>结构System.Runtime, Version=4.2.1.0,这种方法引起了我的注意.

这是签名:

public void Deconstruct(out TKey key, out TValue value);
Run Code Online (Sandbox Code Playgroud)

它是否包含除简单转发KeyValue属性之外的任何逻辑?为什么有人会更喜欢它而不是财产吸气剂?

Dou*_*las 10

解构是一个主要针对C#7中的值元组引入的功能,让您"在一次操作中解包元组中的所有项目".语法已被推广,以允许它也用于其他类型.通过定义Deconstruct方法,您可以使用简洁的解构语法将内部值分配给单个变量:

var kvp = new KeyValuePair<int, string>(10, "John");
var (id, name) = kvp;
Run Code Online (Sandbox Code Playgroud)

您甚至可以通过Deconstruct使用out参数和void返回类型定义这样的方法,将解构应用于您自己的用户定义类型,如您的示例所示.请参阅解构用户定义的类型.