【问题标题】:Cannot implicitly convert type 'string' to 'bool' CheckBox无法将类型“字符串”隐式转换为“布尔”复选框
【发布时间】:2015-01-31 00:12:16
【问题描述】:

我正在尝试从 VB.Net 转换为 C# 以从 sql 数据库中读取数据。以下代码给了我一个错误。“无法将类型 'string' 隐式转换为 'bool'”。它在 VB 中运行良好。如何将此语句转换为 C#?

chkNewEmployee.Checked = dr["chkNewEmployee"].ToString();

【问题讨论】:

  • 底层数据库类型是什么?少量?字符?
  • 这是一个直接的转换。Convert.use Convert.ToBoolean(dr["chkNewEmployee"])

标签: c# asp.net


【解决方案1】:
chkNewEmployee.Checked = Convert.ToBoolean(dr["chkNewEmployee"]);

ToBoolean:

truefalse,反映调用 IConvertible.ToBoolean 方法用于基础类型的值。 如果 value 为 null,该方法返回 false。

根据您的需要,您可能想尝试bool.Parsebool.TryParse

更新

bool.Parsebool.TryParseConvert.ToBoolean

  • 不区分大小写
  • 忽略前导和尾随空格

bool.Parse:

  • 正确的truefalse
  • 在转换失败的情况下抛出FormatException

bool.TryParse:

  • 正确的 truefalse
  • 在转换失败的情况下不抛出异常
  • 如果转换成功返回true,否则返回false
  • 转换结果通过第二个参数保存(out bool result

Convert.ToBoolean:

  • 正确的truefalsenull(在null的情况下返回false
  • 在转换失败的情况下抛出FormatException

【讨论】:

  • @walkhard 如果我使用这三种方法中的任何一种,有什么区别? Convert.ToBooleanbool.Parsebool.TryParse
  • @indago 我已经更新了我的答案,它应该澄清差异。
  • 如果我有一个字符串 string c = ddlMyNames.SelectedValue 并且我正在执行以下操作:" + (c == "All" || c == "") ? "[ClientText] LIKE '%'" : "[ClientText] = '" + c + "'";
  • @SearchForKnowledge 我不确定我是否关注你。您可以创建新问题吗?
【解决方案2】:

我会尝试下面的代码段。看看它是否有效。如果没有,它应该返回一个异常。

 try {
  chkNewEmployee.Checked = Convert.ToBoolean(dr["chkNewEmployee"]);
 }   
 catch (FormatException) {
   Console.WriteLine("Bad Format");
  }   
  catch (InvalidCastException) {
   Console.WriteLine("No Conversion");
  }   

【讨论】:

    【解决方案3】:

    就这样做吧:

    chkNewEmployee.Checked = Convert.ToBoolean(dr["chkNewEmployee"]);
    

    它已经完成了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-03
      • 2014-05-11
      • 2011-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多