gpt4 book ai didi

c# - 带 out 参数的变量范围

转载 作者:太空狗 更新时间:2023-10-29 22:57:02 25 4
gpt4 key购买 nike

示例:

我有以下代码块:

if (!int.TryParse("123", out var parsedNumber))
{
return;
}

Console.WriteLine(parsedNumber);

控制台输出为:123

问题:

Console.WriteLine(parsedNumber); 这行怎么可能知道 parsedNumber

根据我的理解,parsedNumber 应该只在 if-block 中可用,不是吗?

如果我尝试这样做:

foreach (var data in dataList)
{
data += "something";
}

Console.WriteLine(data);

Console.WriteLine(data); 找不到data


我认为解决方案是 out 参数,但我不确定。谁能解释一下?

最佳答案

是的,正如您怀疑的那样,区别在于“out”修饰符。

这是 C# 7 中添加的一项功能,允许您在要将变量用作参数的位置声明变量。

这可能很方便,否则您必须在方法调用之前声明 parsedNumber

您可以在“输出变量”下阅读更多相关信息。

https://blogs.msdn.microsoft.com/dotnet/2016/08/24/whats-new-in-csharp-7-0/

编辑

至于为什么变量仍然在 if 之外的范围内,这肯定会令人困惑,但这是实现它时的设计选择,特别是针对“if”的情况,并且正是为了它可以在“尝试”方法。

你可以引用这个评论(实际上你可以看一下整个讨论,看看关于如何实现这个的不同观点)。

https://github.com/dotnet/roslyn/issues/12939#issuecomment-255650834

关于c# - 带 out 参数的变量范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44981889/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com