无法隐式转换类型';字符串';到';bool';复选框

本文关键字:字符串 bool 复选框 转换 类型 | 更新日期: 2023-09-27 18:21:55

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

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

无法隐式转换类型';字符串';到';bool';复选框

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

ToBoolean:

truefalse,这反映了通过调用值的基础类型的IConvertile.ToBoolean方法如果值为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

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

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

只需这样做:

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

它完成了。