【问题标题】:Convert string to boolean in C#在 C# 中将字符串转换为布尔值
【发布时间】:2018-09-10 11:00:53
【问题描述】:

我需要帮助将字符串转换为布尔值:

我一直在尝试从 TopMost 中为我的程序获取值(真或假)并将其保存在我的设置中。

Settings1.Default["tm"] = ;
Settings1.Default.Save();

我的设置 'tm' 的类型是布尔值(真、假) 但我只使用 C# 的时间很短,我不确定如何保存我的 TopMost 是真还是假。

在您说使用属性中的那个之前,它是一个用户选项;我希望他们能够选择打开(true)或关闭(false)的选项,但将其保存并加载为布尔值。

【问题讨论】:

  • var result = Convert.ToBoolean("mystring")
  • 更一般的 bool thevalue = ("thisistrue"==mystring);

标签: c# boolean


【解决方案1】:

我知道这不是一个理想的问题,但由于 OP 似乎是初学者,我很乐意与他分享一些基本知识......希望大家理解

OP,您可以使用以下任何一种方法将字符串转换为Boolean 类型:

 string sample = "True";
 bool myBool = bool.Parse(sample);

 // Or

 bool myBool = Convert.ToBoolean(sample);

bool.Parse 需要一个参数,在这种情况下是sample.ToBoolean 也需要一个参数。

您可以使用TryParse,它与Parse 相同,但不会引发任何异常:)

string sample = "false";
Boolean myBool;

if (Boolean.TryParse(sample , out myBool))
{
    // Do Something
}

请注意,您不能将任何类型的字符串转换为类型Boolean,因为Boolean 的值只能是TrueFalse

希望你理解:)

【讨论】:

  • 请注意,bool.Parse 的参数不区分大小写。以下测试用例将全部通过:Assert.IsTrue(bool.Parse("True")); Assert.IsTrue(bool.Parse("TRUE")); Assert.IsTrue(bool.Parse("true"));
【解决方案2】:

你必须使用一些 C# 转换系统:

字符串到布尔值:真到真

string str = "True";
bool mybool = System.Convert.ToBoolean(str);

boolean to string: true to True

bool mybool = true;
string str = System.Convert.ToString(mybool);

//or

string str = mybool.ToString();

bool.Parse 需要一个参数,在这种情况下是 str, even 。

Convert.ToBoolean 需要一个参数。

bool.TryParse 需要两个参数,一个条目 (str) 和一个输出 (result)。

如果TryParse为真,则转换正确,否则发生错误

string str = "True";
bool MyBool = bool.Parse(str);

//Or

string str = "True";
if(bool.TryParse(str, out bool result))
{
   //Correct conversion
}
else
{
     //Incorrect, an error has occurred
}

【讨论】:

  • AFAIK 你的第二个功能不是很有用 :( .. 但感谢我们的回答 :)
  • 在您的帖子中,正确的形式是 Convert.ToBoolean,而不是 Convert.ToBool,因为 ToBool 方法不存在
  • 看,这就是我喜欢程序员的地方,他们指出彼此的缺陷并帮助改进......非常感谢你,伙计:)
  • @zackraiyan 如果你真的很欣赏我的回答,你会考虑给它投票吗?第二个选项是从字符串到布尔转换的通用形式,如果 "True" == "True" 或 "False" == "False"
  • 但是第二种方法仍然不是一个理想的检查方法:(因为那样你需要两个字符串来比较......但是,我不会投票,因为你的答案不包含任何解释:( ...这并不是说我不想投票,我愿意...但是我不能让任何答案出现在顶部,因为它没有关于正在发生的事情的信息...。您可以编辑您的答案对吧?
【解决方案3】:

如果您只是不关心失败时该怎么办,请使用此扩展:

    public static bool GetBool(this string input)
    {
        var boolResult = false;
        bool.TryParse(input, out boolResult);
        return boolResult;
    }

如果不是真的,那就是真的,那就是假的。没有例外。

【讨论】:

    猜你喜欢
    • 2018-09-07
    • 1970-01-01
    • 2019-02-19
    • 2017-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-10
    • 2012-12-16
    相关资源
    最近更新 更多