首页 > 解决方案 > 如果开关内部会出现动作,我可以使用 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;
}

标签: c#

解决方案


如果要清理,我宁愿直接将 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 表达式,但这更像是一种解决方法,绝对不会帮助你的代码的可见性。


推荐阅读