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

Where's Deconstruct method of KeyValuePair<> struct?

我确定我以前见过这个方法,因为一年前我问过:

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

编译器同意:

var s = new KeyValuePair<int, int>(1, 3);
var (x, y) = s;

Error CS1061 'KeyValuePair' does not contain a definition for 'Deconstruct' and no accessible extension method 'Deconstruct' accepting a first argument of type 'KeyValuePair' could be found (are you missing a using directive or an assembly reference?

Error CS8129 No suitable 'Deconstruct' instance or extension method was found for type 'KeyValuePair', with 2 out parameters and a void return type.

怎么回事?

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

糟糕。看起来它最初并没有在任何地方添加:

As documentation says:

Applies to

.NET Core

  • 3.0 Preview 6
  • 2.2
  • 2.1
  • 2.0

.NET Standard

  • 2.1 Preview

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