KeyValuePair<> 结构体的解构方法在哪里?

ast*_*tef 3 .net c# compiler-errors key-value c#-7.0

我确定之前我看到过这个方法,因为一年前我问过:KeyValuePair<> struct 中的 Deconstruct 方法的目的是什么?

但现在我根本找不到它,或者任何关于它被移除的痕迹,任何问题,什么都没有。

编译器同意:

var s = new KeyValuePair<int, int>(1, 3);
var (x, y) = s;
Run Code Online (Sandbox Code Playgroud)

错误 CS1061“KeyValuePair”不包含“Deconstruct”的定义,并且找不到接受“KeyValuePair”类型的第一个参数的可访问扩展方法“Deconstruct”(您是否缺少 using 指令或程序集引用?

错误 CS8129 找不到适合类型“KeyValuePair”的“解构”实例或扩展方法,具有 2 个输出参数和一个 void 返回类型。

这是怎么回事?

ast*_*tef 6

哎呀。看起来它最初并没有被添加到任何地方:

正如文档所说

适用于

.NET 核心

  • 3.0 预览 6
  • 2.2
  • 2.1
  • 2.0

.NET 标准

  • 2.1 预览

看起来我一年前的目标是 .NET Core,现在我使用的是 .NET Standard 2.0。


Dou*_*las 5

您可能正在 .NET Framework 上运行您的代码。虽然 .NET Framework 和 .NET Core 都支持 C# 7 解构语法,但该Deconstruct方法KeyValuePair<TKey,TValue>目前仅在 .NET Core 2.0 及更高版本中受支持。您可以查看Microsoft Docs上的“适用于”部分。