.net KeyValuePair〈>结构的解构方法在哪里?

ehxuflar  于 2023-02-01  发布在  .NET
关注(0)|答案(3)|浏览(116)

我确信以前我见过这种方法,因为一年前我问过:What is the purpose of Deconstruct method in KeyValuePair<> struct?
但现在我根本找不到它,也找不到任何关于它被移除的痕迹,任何问题,什么都没有。
编译者同意:

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

错误CS1061 "KeyValuePair"不包含"Deconstruct"的定义,并且找不到接受类型为"KeyValuePair"的第一个参数的可访问扩展方法"Deconstruct"(是否缺少using指令或程序集引用?
错误CS8129没有为类型"KeyValuePair"找到合适的"Deconstruct"示例或扩展方法,该类型具有2个out参数和一个void返回类型。
这是怎么回事?

bakd9h0s

bakd9h0s1#

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

up9lanfz

up9lanfz2#

哎呀。看起来它最初没有添加到所有位置:
As documentation says
适用于
. NET核心

  • 3.0预览版6
  • 2.2
  • 2.1
  • 2.0

. NET标准

  • 2.1预览

看起来一年前我的目标是. NET核心,现在我的目标是. NET标准2.0。

iibxawm4

iibxawm43#

我在使用.net标准2.0时遇到了这个问题(创建源代码生成器时需要)。

public static class KeyValuePairExtensions {
    public static void Deconstruct<TKey,TValue>( this KeyValuePair<TKey, TValue> keyValuePair, out TKey key, out TValue value ) {
        key   = keyValuePair.Key;
        value = keyValuePair.Value;
    }
}

相关问题