谁能给我解释一下这段 C# 代码片段吗?

zee*_*eee 0 c#

我在 Twitter 上看到了这个,但找不到我能理解的解释。我对此进行了测试,发现答案是1。提前致谢。

(var @_, var _) = (5,2);
Console.WriteLine(@_/_);
Run Code Online (Sandbox Code Playgroud)

Mah*_*mee 6

正如@Jeroen Mostert的评论中指出的,_是一个丢弃,所以如果你尝试命名一个变量_,它只是意味着一个占位符名称。但是,您可以使用该符号对其进行转义并用作_实际名称@,这在 C# 中通常意味着转义或原始形式。

本质上,var @_这意味着一个名为_while的变量var _意味着一个占位符变量,它没有名称并且不可寻址。

现在,当访问名为 的变量时_,您不必再次执行转义序列,_/_即可有效访问该变量。a/a如果你的变量被命名了,它就等于a。但问题以这种方式编写代码让你感到困惑。请注意,@不会改变任何东西,因为_首先不被视为丢弃。“读取/访问”丢弃的数据没有任何意义。

由于_等于 5,5/5 = 1

  • 几乎 - 请注意,第二条语句也可以有效地写为 `Console.WriteLine(_ / _)`,因为 `_` 不能在此表达式中丢弃。它再次写成“@_”只是为了让读者对发生的事情感到困惑。只有“_”的第一个实例必须转义,以防止它被视为丢弃并将“_”作为标识符带入作用域。 (5认同)