Самый ясный способ привести значение типа bool к типу bool - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть функция, которая возвращает строковое значение true / false в виде bool, каков наилучший / самый ясный способ вернуть это? Я хочу установить по умолчанию, что все, кроме 0 или не учитывающего регистр false, имеет значение true. Это то, что у меня есть, но я чувствую, что он плохо читается, но все же функционален.

bool isTrue = !resultString.Equals("FALSE", StringComparison.OrdinalIgnoreCase);
if(isTrue)
    isTrue = !resultString.Equals("0");
return isTrue;

Я чувствую, что должен быть лучший способ go об этом.

Ответы [ 3 ]

1 голос
/ 01 апреля 2020

Другой вариант: Convert.ToBoolean();

bool isTrue;
try
{
    isTrue = Convert.ToBoolean(resultstring);
}
catch
{
    isTrue = true;
}

См .: https://docs.microsoft.com/en-us/dotnet/api/system.convert.toboolean?view=netframework-4.8#System_Convert_ToBoolean_System_String_

0 голосов
/ 01 апреля 2020

Другой способ, похожий на другие

public static bool Parse(string input)
{
    bool result;
    return input != "0" && (!bool.TryParse(input, out result) || result);
}

Или, если вы используете C # 7 или выше, это всего одна строка:

public static bool Parse(string input)
{
    return input != "0" && (!bool.TryParse(input, out var result) || result);
}
0 голосов
/ 01 апреля 2020

Все, что не является допустимым логическим значением, преобразуется в «true», в противном случае «0» или «FALSE» преобразуются правильно. То же самое с «1» и «ИСТИНА»

bool isTrue;
if(!bool.TryParse(resultString, out bool result))
{
    isTrue = true;
} 
else isTrue = result;

//Sample output would be as follows 
//resultString="0"        => isTrue=false
//resultString="1"        => isTrue=true 
//resultString="False"    => isTrue=false
//resultString="True"     => isTrue=true 
//resultString="Apple"    => isTrue=true 
//resultString="House"    => isTrue=true 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...