【问题标题】:What does _ mean in functions and in variable names? [duplicate]_ 在函数和变量名中是什么意思? [复制]
【发布时间】:2022-01-06 08:57:23
【问题描述】:

例子:

var timer1 = new Timer(_ => Console.WriteLine("Hello World"), null, 0, 2000);

【问题讨论】:

  • 不是丢弃,只是一个变量名,用于存储传递给 TimerCallback 回调的 state 参数。任何名称都可以,但 _ 通常用于表示您不想使用它。
  • 见“注”here:“为了向后兼容,如果只有一个输入参数被命名为_,那么,在一个lambda表达式中,_被视为那个参数”。所以这不是技术上的丢弃——它是一个名为_的变量

标签: c#


【解决方案1】:

C# 7.0 开始,C# 开始支持丢弃。 _ 被认为是丢弃,它基本上是一个占位符变量,在应用程序代码中故意未使用。从C# 9.0 开始,您还可以使用丢弃来指定 lambda 表达式的未使用输入参数(如您的示例中所示)。

丢弃基本上只是为了生成代码而有意忽略不相关的局部变量的一种方式。因此,例如,当您调用一个返回值的函数但您只对它所做的底层操作感兴趣时,您不必将其输出分配给调用者方法中定义的局部变量。

由于只能有一个丢弃变量,因此该变量甚至可能不会被分配存储空间,因此丢弃实际上可以减少内存分配,同时还可以使代码的意图更清晰,增强其可读性和可维护性。

_ 是有效丢弃时,尝试在赋值操作中访问它的值或修改它会产生编译器错误(“当前上下文中不存在名称'_'”)。产生此错误是因为 _ 未分配值,并且可能未分配存储位置。

更多关于丢弃的信息可以在link阅读

【讨论】:

  • 感谢您的回答,但请将重复的问题标记为重复(无论如何+1 ;-))
  • 感谢@canton7 的评论 - 我会修改我的答案
  • 如果您觉得这个答案比针对Discard feature significance in C# 7.0? 的答案更好,请在此处添加。
  • @Johnathan 但是.. 独角兽点呢?
  • 我发布答案后问题已关闭,从现在开始我会更加关注
猜你喜欢
  • 2012-07-04
  • 2012-03-17
  • 1970-01-01
  • 2022-11-04
  • 2011-07-08
  • 2011-05-22
  • 2012-04-29
  • 1970-01-01
相关资源
最近更新 更多