如何将bool转换为可空的bool(bool?)

时间:2011-10-05 15:03:06

标签: c# .net winforms linq linq-to-entities

我有一个带有列

的表提供程序
                 implied(tiny int)(something like nullable bool)
                 providerid(int)

我有一张表格,我有复选框

我正在使用c#..

进行winforms应用程序

我正在使用enitities,我的dbcontext名称是dbcontext

如何用C sharp将bool转换为可空的bool(bool?)。

我试过这种方式

      if (chkbox.checked == true)

            bool yes = 0;
        else

          bool   yes = 1;

        dbcontext.implied = yes;

但收到错误

Cannot convert bool to bool?

5 个答案:

答案 0 :(得分:13)

明确地转换为bool?

bool b = true;
bool? b2 = (bool?)b;

如果您感兴趣,可以将bool?转换为bool。您可以先检查HasValue,如果它为空,将返回false,如果不为空则返回true

如果它有值,你可以施放到布尔。

bool? b = null;
if (b.HasValue == false) // it's null
{
  //initialize b 
  b = false;
}
else if((bool)b == true)
{
  // do whatever
}

查看http://msdn.microsoft.com/en-us/library/bb384091.aspx是否有bool?布尔转换。

答案 1 :(得分:3)

可以直接执行类似

的操作
bool result = true;
bool? toBindData = (bool?)result;

答案 2 :(得分:2)

dbcontext.implied = new Nullable<bool>(yes);

答案 3 :(得分:0)

尝试 Convert.ToBoolean(您的复选框)

下面我在DataGridView检查CheckBox列的测试方式,并且工作正常。

if ( Convert.ToBoolean( dgv.Rows[r].Cells["Delete"].Value))
{
    //Do work;
}

答案 4 :(得分:0)

这里是解决方法:

if (Convert.ToBoolean(chkbox.checked) == true)

或更简单的版本:

if (Convert.ToBoolean(chkbox.checked))

,因为默认条件预期该语句的真相

依赖项:

using.System;