我正在阅读有关C#7中新的输出变量功能的文章,可以在这里找到。我有两个问题:
- 它说:
我们也允许将"discards"作为输出参数,形式为
_
,让您忽略您不关心的输出参数:
问:我想这只是一条信息而不是C#7的新功能,因为在之前的C# 7.0版本中,我们也可以这样做。p.GetCoordinates(out var x, out _); // I only care about x
var _; if (Int.TryParse(str, out _)) ...
或者我在这里漏掉了什么吗?
当我按照同一篇博客中所述去做时,我的代码会出现错误:
~Person() => names.TryRemove(id, out *);
*
不是一个有效的标识符。我猜这是 Mads Torgersen 的疏忽?
out _
中,_
不是一个变量,你没有声明它,也不能用名称来使用它。而在int _
中,_
就是一个变量。 - Evkout _
,没有使用var
。 有了var
,它确实与以前相同。 - EvkConsole.WriteLine(_)
- 编译器会报告没有这样的变量,不能编译通过。相当奇怪。更奇怪的是:如果像这样做_ = SomeMethodCall()
- 这将被编译为SomeMethodCall()
,直接替换掉它。因此,在所有这些之后,你仍然无法真正地使用那个变量。 - Evk