第一种写法
row["补货时间"] = !补货时间.Checked ? DBNull.Value : 补货时间.Text;
第二种写法
if (!补货时间.Checked)
{
   row["补货时间"] = DBNull.Value;
}
else
{
    row["补货时间"] = 补货时间.Text;
}
第一种写法就报错,报错在dbnull.value位置,第二种就能通过,这是为什么呢,两种写法应该是没有区别的呀

解决方案 »

  1.   

    第一种写法 
    row["补货时间"] = !补货时间.Checked ? DBNull.Value : 补货时间.Text; 
    这种写法要求DBNull.Value 、补货时间.Text类型一致,可能是它们数据类型不一致吧
      

  2.   

    第一种是三元表达式
    row["补货时间"] 是可以存放object类型的数据,但是 DBNull.Value 和 补货时间.Text  的类型不一样,报错第二种,row["补货时间"]江堰市是可以存放object类型的数据 ,所以不报错
      

  3.   

    你把DBNull.Value改成Null或者""试一试
      

  4.   

    row["补货时间"] = !补货时间.Checked ? DBNull.Value : 补货时间.Text; 就是返回类型不一致异至的
      

  5.   

    你的写法错了!换成这个:
    !补货时间.Checked ? row["补货时间"]=DBNull.Value : row["补货时间"]=补货时间.Text; 
      

  6.   

    条件?公式:公式
    这个用法你理解错了!举个简单的例子!
    i>0?i=1:i=0;这条语句是和
    if(i>0)
    {
        i=1;
    }else{
        i=0;
    }是等价的!
      

  7.   

    ?:是三木运算符,它要求你的返回值类型相同DBNull.Value 和补货时间.Text很显然类型不同
    还有,就是判断条件如果是==true,那么你就写清楚,别“非”来“非”去的,很不直观。要是养成这样的习惯,你写其它的判断条件也是一样,以后看起来会很晕的