c# - 如果开关内部会出现动作,我可以使用 C# 开关表达式吗?
问题描述
有没有办法可以使用 ac#表达式来清理这段代码:switch
bool FileOperation(string _path)
{
bool _newDb;
if (File.Exists(_path))
{
_newDb = false;
File.Delete(_path);
}
else
{
_newDb = true;
}
FileStream writeStream = new FileStream(
_path, FileMode.OpenOrCreate, FileAccess.Write);
ReadWriteStream(
Android.App.Application.Context.Assets.Open(sqliteFilename), writeStream);
return _newDb;
}
解决方案
如果要清理,我宁愿直接将 File.Exists 分配给 _newDB 变量,而不是在 if else 语句中分配它。
您也可以使用FileMode.Create
代替FileMode.OpenOrCreate
, 来始终创建一个新文件(并删除旧文件,如果它存在)。
文件模式枚举
例子:
bool FileOperation(string _path) {
// Setting _newDB bool equal to true if the file doesn't exist.
bool _newDb = !File.Exists(_path);
// Create new fileStream with using to dispose of it after we are done.
using FileStream writeStream = new FileStream(
_path,
FileMode.OpenOrCreate,
FileAccess.Write);
ReadWriteStream(
Android.App.Application.Context.Assets
.Open(sqliteFilename), writeStream);
return _newDb;
}
如果你真的想要强硬,你可以使用switch 表达式,但这更像是一种解决方法,绝对不会帮助你的代码的可见性。
推荐阅读
- amazon-web-services - Amplify AppSync:自定义排序和分页过滤
- javascript - defer 不适用于 laravel 6 刀片中的 jquery.min.js
- python - 查找匹配和不匹配的 recs 熊猫
- sql - Oracle中如何根据列名选择列
- jasper-reports - 比较具有多个值的字符串
- azure - Azure 存储库:拉取请求中的无限合并冲突
- ruby-on-rails - 在 VS CODE 中使用 ruby-debug-ide 调试 Rspec
- sql - sqflite 中的版本号
- javascript - 存储对象数组 ang 然后检查上一个和下一个项目
- java - 需要在 java 中的 Android 10 设备中的 Arraylist 中显示所有图库图像