字符串到bool内联转换

Joh*_*han 5 c# asp.net string boolean

我目前拥有的:

bool okPress = !string.IsNullOrEmpty(Ctx.Request["okPress"]) &&
    Convert.ToBoolean(Ctx.Request["okPress"]);
Run Code Online (Sandbox Code Playgroud)

如果我在这里错了,请纠正我,但FormatException如果字符串不是" true/ True"或" false/ False" ,这不会抛出吗?有没有办法在一行中处理转换,而不必担心异常?或者我需要使用Boolean.TryParse

Tim*_*ter 5

你可以使用Boolean.TryParse:

bool okPress;
bool success = Boolean.TryParse(Ctx.Request["okPress"]), out okPress);
Run Code Online (Sandbox Code Playgroud)

为了它的价值,这里是一个"单行",创建以下扩展,这可能在LINQ查询中特别有用:

public static bool TryGetBool(this string item)
{
    bool b;
    Boolean.TryParse(item, out b);
    return b; 
}
Run Code Online (Sandbox Code Playgroud)

和写:

bool okPress = Ctx.Request["okPress"].TryGetBool();
Run Code Online (Sandbox Code Playgroud)

  • 有没有理由首先将bool b声明为false?它总是会被TryParse设置为不会因此在传递之前根本不需要初始化... (2认同)
  • 我必须修改开发人员使用_intent_初始化变量的代码,以抛弃初始化的值(比上面简单的`out`稍微复杂一点),但忽略了从未重新分配的某个逻辑路径.当然,编译器并不关心,因为他们确实分配了一个默认的_invalid_值.我全都赞成只分配_matter_的值.我也看到过很多像上面这样的用法,没有经验的程序员会给出一个初始值,认为它将是"默认的,如果解析失败"的价值,当然情况并非如此. (2认同)