2010-07-05 119 views
1

如果我宣布一个bool isTrue = false; // init it to false布尔变量和字符串值进行比较,在C#

,我可以从一个string strVal = T; // I assumed it is the TRUE value

我听说它的价值是不是一个好的代码风格在C#比较字符串如

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

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

有什么好方法可以做到吗?

+1

还有错字? 无需做“strVal.tostring()” – Arseny 2010-07-05 08:45:06

+0

@Arseny,更正。谢谢。 – 2010-07-05 08:58:49

回答

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; 
} 
+0

@all。谢谢。 – 2010-07-05 08:57:58

+0

@格拉辛。我调试了一下,发现它在'boolVal =“T”'not“true”时不起作用。然后我可以在'TryParse()'后面得到'stringBool = false'我怎样才能用你的方法来解决这个问题?谢谢。 – 2010-07-05 09:09:48

+0

在这种情况下,TryParse不处理“T”将返回false(即解析失败)。检查它的返回值,如果TryParse返回false,则执行一些自定义分析来处理“T”,“F”等等......如果boolVal仍然不匹配任何东西,则应该抛出异常。 – 2010-07-05 09:59:14

1

无需将布尔值转换为字符串以便比较两者。您可以将两个布尔值直接简单地比较:

if (isTrue == boolVal) {} 

更新:(以下更新问题)

您可以分析一个字符串转换成一个布尔值,并在您的比较使用所产生的布尔(如上) ,使用bool.Parsebool.TryParse

+0

对不起,我上面的原始帖子。实际上'boolVal'是一个'strVal' - 'T'。我认为是'布尔值'TRUE。 – 2010-07-05 08:40:41

3

尝试bool.Parse()方法来代替。

+2

或bool.TryParse更好,如果你不确定输入字符串是一个有效的布尔值。 – munissor 2010-07-05 08:42:34

1
bool.Parse(boolVal) == isTrue 
1

您可以改为比较布尔类型。

bool temp = bool.Parse(strVal); 

if(isTrue == temp) 
0

如果你真的想这样做字符串比较:

if (string.Equals(isTrue.ToString(), strValue)) { } 
+1

如果srtValue =“true”或“True” – Arseny 2010-07-05 08:53:35

+1

在两侧都加上.ToLower(),则区分大小写将不起作用! ;) – 2010-07-05 09:01:49

1

另一个我用了很多版本,仅仅是Convert.ToBoolean(stringFromBoolVal)

问候

1

这个怎么样简单的方法尝试确定bool变量的值isTrue

isTrue = strVal == "T"; 

isTrue将返回true,如果strVal等于“T”。如果不是,则返回false。