如果我宣布bool isTrue = false; // init it to false
我可以从string strVal = T; // I assumed it is the TRUE value
我听说比较C#中的字符串
并不是一个好的代码风格 if (isTrue.tostring() == strVal) {}.
有一段时间,我将字符串变量转换为枚举,然后我可以比较它更方便。
有什么好方法吗?
答案 0 :(得分:6)
是的,首先将字符串解析为布尔值。
试试这个:
bool someBool = false;
string boolVal = "true";
bool stringBool;
bool.TryParse(boolVal, out stringBool);
if (someBool == boolVal)
{
}
或者处理'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;
}
答案 1 :(得分:3)
请改用bool.Parse()
方法。
答案 2 :(得分:1)
没有必要将布尔值转换为字符串以便比较两者。您可以直接比较两个布尔值:
if (isTrue == boolVal) {}
更新(更新后的问题)
您可以将字符串解析为布尔值,并在比较中使用结果布尔值(如上所述),使用bool.Parse
或bool.TryParse
。
答案 3 :(得分:1)
bool.Parse(boolVal) == isTrue
答案 4 :(得分:1)
您可以比较布尔类型。
bool temp = bool.Parse(strVal);
if(isTrue == temp)
答案 5 :(得分:1)
我使用的另一个版本只是Convert.ToBoolean(stringFromBoolVal)
问候
答案 6 :(得分:0)
如果你真的想进行字符串比较:
if (string.Equals(isTrue.ToString(), strValue)) { }
答案 7 :(得分:0)
如何尝试这种简单的方法来确定bool变量isTrue
的值:
isTrue = strVal == "T";
如果strVal等于“T”, isTrue
将返回true。如果没有,则返回false。