首页 > 解决方案 > 为什么当我返回时布尔变量会被清除?

问题描述

我有一个例程如下,在一个助手类中

if (HelperClass.CheckFileExists(filename, out bool fileexists)

我的调用文件中有一个全局变量

 private bool fileexists= false;

但是当上面的调用返回 fileexists 时,它被设置为 true ,然后在我退出调用例程后它被设置为 false ;为什么会发生这种情况?

标签: c#

解决方案


out bool fileexists声明一个名为的fileexists变量,只要新变量在范围内,它就会“隐藏”全局变量。

如果要引用现有变量或字段,请改用out fileexists(不带数据类型):

if (HelperClass.CheckFileExists(filename, out fileexists)) ...

附带说明一下,在这种情况下,您似乎不需要out 参数:如果您的辅助方法执行其名称所暗示的操作,则以下代码:

fileexists = HelperClass.CheckFileExists(filename);
if (fileexists) ...

可能更具可读性,并且避免将相同的值作为返回值和作为输出参数返回。


推荐阅读