如果我宣布一个bool isTrue = false; // init it to false
布尔变量和字符串值进行比较,在C#
,我可以从一个string strVal = T; // I assumed it is the TRUE value
我听说它的价值是不是一个好的代码风格在C#比较字符串如
if (isTrue.tostring() == strVal) {}.
有一段时间,我将字符串变量转换为枚举,然后我可以比较它更方便。
有什么好方法可以做到吗?
如果我宣布一个bool isTrue = false; // init it to false
布尔变量和字符串值进行比较,在C#
,我可以从一个string strVal = T; // I assumed it is the TRUE value
我听说它的价值是不是一个好的代码风格在C#比较字符串如
if (isTrue.tostring() == strVal) {}.
有一段时间,我将字符串变量转换为枚举,然后我可以比较它更方便。
有什么好方法可以做到吗?
是的,你首先将字符串解析为布尔值。
试试这个:
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;
}
@all。谢谢。 – 2010-07-05 08:57:58
@格拉辛。我调试了一下,发现它在'boolVal =“T”'not“true”时不起作用。然后我可以在'TryParse()'后面得到'stringBool = false'我怎样才能用你的方法来解决这个问题?谢谢。 – 2010-07-05 09:09:48
在这种情况下,TryParse不处理“T”将返回false(即解析失败)。检查它的返回值,如果TryParse返回false,则执行一些自定义分析来处理“T”,“F”等等......如果boolVal仍然不匹配任何东西,则应该抛出异常。 – 2010-07-05 09:59:14
无需将布尔值转换为字符串以便比较两者。您可以将两个布尔值直接简单地比较:
if (isTrue == boolVal) {}
更新:(以下更新问题)
您可以分析一个字符串转换成一个布尔值,并在您的比较使用所产生的布尔(如上) ,使用bool.Parse
或bool.TryParse
。
对不起,我上面的原始帖子。实际上'boolVal'是一个'strVal' - 'T'。我认为是'布尔值'TRUE。 – 2010-07-05 08:40:41
bool.Parse(boolVal) == isTrue
您可以改为比较布尔类型。
bool temp = bool.Parse(strVal);
if(isTrue == temp)
如果你真的想这样做字符串比较:
if (string.Equals(isTrue.ToString(), strValue)) { }
如果srtValue =“true”或“True” – Arseny 2010-07-05 08:53:35
在两侧都加上.ToLower(),则区分大小写将不起作用! ;) – 2010-07-05 09:01:49
另一个我用了很多版本,仅仅是Convert.ToBoolean(stringFromBoolVal)
问候
这个怎么样简单的方法尝试确定bool变量的值isTrue
:
isTrue = strVal == "T";
isTrue
将返回true,如果strVal等于“T”。如果不是,则返回false。
还有错字? 无需做“strVal.tostring()” – Arseny 2010-07-05 08:45:06
@Arseny,更正。谢谢。 – 2010-07-05 08:58:49