Sea*_*ayn 5 c# scope local-variables
例:
我有以下代码块:
if (!int.TryParse("123", out var parsedNumber))
{
return;
}
Console.WriteLine(parsedNumber);
Run Code Online (Sandbox Code Playgroud)
控制台中的输出为:123
题:
生产线Console.WriteLine(parsedNumber);知道的可能性如何parsedNumber?
根据我的理解,parsedNumber应该仅在中提供if-block,不是吗?
如果我尝试这样做:
foreach (var data in dataList)
{
data += "something";
}
Console.WriteLine(data);
Run Code Online (Sandbox Code Playgroud)
Console.WriteLine(data);找不到data。
我认为解决方案是out参数,但是我不确定。有人可以解释吗?
是的,因为您怀疑不同之处在于“出”修饰符。
它是C#7中添加的一项功能,它使您可以在要用作变量的位置声明变量。
这可能很方便,因为否则您必须parsedNumber在方法调用之前声明。
您可以在此处的“输出变量”下阅读更多信息。
https://blogs.msdn.microsoft.com/dotnet/2016/08/24/whats-new-in-csharp-7-0/
编辑
至于为什么变量仍然在if范围之外,这肯定会造成混淆,但这是实现此目的时的一种设计选择,特别是针对“ if”情况,并且恰好可以在“ try”方法中使用它。 。
您可以参考此评论(实际上,您可以看一下整个讨论,以了解如何实现此观点的不同观点)。
https://github.com/dotnet/roslyn/issues/12939#issuecomment-255650834
| 归档时间: |
|
| 查看次数: |
1008 次 |
| 最近记录: |