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

时间:2019-07-15 21:04:31

标签: c# compiler-errors c#-7.0 keyvaluepair

我确定以前我曾经见过这种方法,因为一年前我问过:What is the purpose of Deconstruct method in KeyValuePair<> struct?

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

编译器同意:

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

错误CS1061'KeyValuePair'不包含定义   用于“解构”,没有可用的扩展方法“解构”   接受类型为'KeyValuePair'的第一个参数可能是   找到(您是否缺少using指令或程序集引用?

     

错误CS8129没有合适的“解构”实例或扩展方法   找到类型为“ KeyValuePair”的参数,其中包含2个out参数和   无效的返回类型。

这是怎么回事?

2 个答案:

答案 0 :(得分:2)

糟糕。最初似乎没有在所有地方添加它:

As documentation says

  

适用于

     

.NET Core

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

.NET标准

     
      
  • 2.1预览
  •   

好像我在一年前瞄准了.NET Core,现在我使用的是.NET Standard 2.0。

答案 1 :(得分:0)

您可能正在.NET Framework上运行代码。尽管.NET Framework和.NET Core均支持C#7解构语法,但{.1}的Deconstruct方法目前仅在.NET Core 2.0及更高版本中受支持。您可以检查Microsoft Docs上的“适用于”部分。