首页 > 解决方案 > Linqpad 使用丢弃(_ = 下划线)引发错误 CS0246 - 找不到类型或命名空间名称“_”

问题描述

我想了解命名元组和丢弃。

基于C# 7.0: Tuples Explained (msdn-magazine 2017-08)我创建了这个程序

void Main()
{

(string firstname, _, int age) user = ("surfmuggle", "discard this", 15);
user.Dump();
}

但它抛出

CS0246 找不到类型或命名空间名称“_”(按 F4 添加 using 指令或程序集引用)

问题

谢谢

程序的屏幕

Linqpad 6 程序

标签: c#linqpad

解决方案


这与 LINQPad 无关 - 您将在 Visual Studio 中遇到相同的错误。

问题是您试图在不受支持的上下文中使用 C# 的丢弃。从文档中:

在 C# 7.0 中,以下上下文中的赋值支持丢弃:

  • 元组和对象解构。
  • 与 is 和 switch 匹配的模式。
  • 调用没有参数的方法。
  • 当没有 _ 在范围内时,一个独立的 _。

您的示例将在解构上下文中工作:

(string firstname, _, int age) = ("surfmuggle", "discard this", 15);
firstname.Dump();
age.Dump();

推荐阅读