我确信以前我见过这种方法,因为一年前我问过: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返回类型。
这是怎么回事?
3条答案
按热度按时间bakd9h0s1#
您可能正在.NET Framework上运行代码。虽然.NET Framework和.NET Core都支持C# 7解构语法,但当前只有.NET Core 2.0及更高版本支持
KeyValuePair<TKey,TValue>
的Deconstruct
方法。您可以查看Microsoft文档上的“适用于”部分。up9lanfz2#
哎呀。看起来它最初没有添加到所有位置:
As documentation says:
适用于
. NET核心
. NET标准
看起来一年前我的目标是. NET核心,现在我的目标是. NET标准2.0。
iibxawm43#
我在使用.net标准2.0时遇到了这个问题(创建源代码生成器时需要)。