C#中的Bool变量和字符串值比较

Nan*_* HE 1 c# string compare

如果我宣布了 bool isTrue = false; // init it to false

我可以从a获得价值 string strVal = T; // I assumed it is the TRUE value

我听说在C#中比较字符串并不是一个好的代码风格

if (isTrue.tostring() == strVal) {}.

有一段时间,我将字符串变量转换为枚举然后我可以比较它更方便.

有什么好方法吗?

Mat*_*ell 6

是的,首先将字符串解析为布尔值.

试试这个:

bool someBool = false; 

string boolVal = "true";
bool stringBool;
bool.TryParse(boolVal, out stringBool);

if (someBool == boolVal) 
{

}
Run Code Online (Sandbox Code Playgroud)

或者处理'T'和'F'尝试以下方法:

public bool ParseString(string maybeBool)
{
    return ParseString(maybeBool, false);
}

public bool ParseString(string maybeBool, bool def)
{
    bool stringBool;
    if (bool.TryParse(maybeBool, out stringBool))
        return stringBool;

    if (string.Equals(maybeBool, "T", StringComparison.OrdinalIgnoreCase))
        return true;

    if (string.Equals(maybeBool, "F", StringComparison.OrdinalIgnoreCase))
        return false;

    return def;
}
Run Code Online (Sandbox Code Playgroud)