c# - 为什么当我返回时布尔变量会被清除?
问题描述
我有一个例程如下,在一个助手类中
if (HelperClass.CheckFileExists(filename, out bool fileexists)
我的调用文件中有一个全局变量
private bool fileexists= false;
但是当上面的调用返回 fileexists 时,它被设置为 true ,然后在我退出调用例程后它被设置为 false ;为什么会发生这种情况?
解决方案
out bool fileexists
声明一个名为的新fileexists
变量,只要新变量在范围内,它就会“隐藏”全局变量。
如果要引用现有变量或字段,请改用out fileexists
(不带数据类型):
if (HelperClass.CheckFileExists(filename, out fileexists)) ...
附带说明一下,在这种情况下,您似乎不需要out 参数:如果您的辅助方法执行其名称所暗示的操作,则以下代码:
fileexists = HelperClass.CheckFileExists(filename);
if (fileexists) ...
可能更具可读性,并且避免将相同的值作为返回值和作为输出参数返回。
推荐阅读
- c - 在程序中,扩大了形状的大小是成功的,但是改变颜色效果不好
- xampp - xampp 不工作,我几乎尝试了所有事情
- php - 页面在使用 Laravel 5.6 的 cpanel 中不起作用
- php - 在这里使用 Laravel Eloquent 时遇到问题
- android - REST 最佳实践为访客和身份验证获取 /articles?
- python - rect 与 rect 列表的碰撞
- mysql - Airflow 在更改 celery 的配置文件时出现错误 ImportError: No module named MySQLdb
- python - 审计轮修复未按预期工作
- css - 当我减小屏幕尺寸时卡在其他卡后面
- apache - .htaccess 可以吗?