Переменная Bool и строковое значение сравниваются в C # - PullRequest
1 голос
/ 05 июля 2010

Если я объявил bool isTrue = false; // init it to false

, и я могу получить значение из string strVal = T; // I assumed it is the TRUE value

Я слышал, что это не очень хороший стиль кода для сравнения строк в C #, как

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

Когда-нибудь я преобразую строковую переменную в enum, тогда я могу сравнить ее более удобно.

Есть ли хороший способ сделать это?

Ответы [ 8 ]

6 голосов
/ 05 июля 2010

Да, сначала вы разбираете строку в логическое значение.

Попробуйте это:

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;
}
3 голосов
/ 05 июля 2010

Попробуйте bool.Parse() метод вместо.

1 голос
/ 05 июля 2010

Еще одна версия, которую я часто использую, это просто Convert.ToBoolean(stringFromBoolVal)

regards

1 голос
/ 05 июля 2010

вместо этого вы можете сравнить логический тип.

bool temp = bool.Parse(strVal);

if(isTrue == temp)
1 голос
/ 05 июля 2010
bool.Parse(boolVal) == isTrue 
1 голос
/ 05 июля 2010

Нет необходимости преобразовывать логические значения в строки, чтобы сравнить их.Вы можете просто сравнить два логических значения напрямую:

if (isTrue == boolVal) {}

Обновление: (после обновленного вопроса)

Вы можете разобрать строку в логическое значение и использовать полученныйбулево в вашем сравнении (как выше), используя bool.Parse или bool.TryParse.

0 голосов
/ 03 мая 2017

Как насчет того, чтобы попробовать этот простой способ определить значение переменной bool isTrue:

isTrue = strVal == "T";

isTrue вернет true, если strVal равен "T".И вернуть false, если нет.

0 голосов
/ 05 июля 2010

Если вы действительно хотите сделать сравнение строк:

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