c# - 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程序的屏幕
解决方案
这与 LINQPad 无关 - 您将在 Visual Studio 中遇到相同的错误。
问题是您试图在不受支持的上下文中使用 C# 的丢弃。从文档中:
在 C# 7.0 中,以下上下文中的赋值支持丢弃:
- 元组和对象解构。
- 与 is 和 switch 匹配的模式。
- 调用没有参数的方法。
- 当没有 _ 在范围内时,一个独立的 _。
您的示例将在解构上下文中工作:
(string firstname, _, int age) = ("surfmuggle", "discard this", 15);
firstname.Dump();
age.Dump();
推荐阅读
- flutter - 如何解决 Android SDK 仅包含许可证
- process - 内核 /proc/pid/stack 格式,地址是什么意思?
- ios - 如何快速将 UInt32 类型的字节数组写入 OutputStream
- c++ - 如何在 C++ 中读取具有相似名称的文件
- dataflow - Mercari Spanner to Bigquery - QUERY 中无法识别的参数
- c# - 在标准输入上写入子进程,然后在子进程仍在运行时退出父进程
- google-apps-script - 如何从放入数组的单行中获取值?
- google-apps-script - Google 脚本错误:openById 发生意外错误
- json - 错误:在 Ionic-Angular 中找不到类型为“generation-ii”的不同支持对象“[object Object]”...
- c++ - 为什么下面的代码给出 'std::logic_error' what(): basic_string::_M_construct null not valid?