在C#中string为null时如何赋值为​​空 [英] How to assign value empty when string is null in C#

查看:265
本文介绍了在C#中string为null时如何赋值为​​空的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经为命令获取参数并将gridview行指定为值。当网格视图行为空时,它显示错误'对象引用未设置为实例'。我知道如何在try块中使用变量赋值。但是我想这样给出。是否有任何方法可以将这些值转换为C#中的空字符串。



我尝试了什么:



 cmdTemp.Parameters.AddWithValue(  @ comment_NAME30,row.Cells [ 0 ]。Value.ToString()); 
cmdTemp.Parameters.AddWithValue( PRODUCT_NO,row.Cells [ 1 ] Value.ToString())。
cmdTemp.Parameters.AddWithValue( @ PRODUCT_NAME,row.Cells [ 2 ] Value.ToString())。
cmdTemp.Parameters.AddWithValue( @ QTY,row.Cells [ 3 ] Value.ToString())。
cmdTemp.Parameters.AddWithValue( @ UOM,row.Cells [ 4 ] Value.ToString())。
cmdTemp.Parameters.AddWithValue( @ PRICE,row.Cells [ 5 ] Value.ToString())。
cmdTemp.Parameters.AddWithValue( @ ITEM1_NO,row.Cells [ 6 ] Value.ToString())。
cmdTemp.Parameters.AddWithValue( @ DISCOUNT_PC,row.Cells [ 7 ] Value.ToString())。
cmdTemp.Parameters.AddWithValue( @ AMOUNT,row.Cells [ 8 ] Value.ToString())。
cmdTemp.Parameters.AddWithValue( @ SC_NO,row.Cells [ 10 ] Value.ToString())。
cmdTemp.Parameters.AddWithValue( @ GL_CODE,row.Cells [ 11 ] Value.ToString())。
cmdTemp.Parameters.AddWithValue( @ PROJ_NO,row.Cells [ 12 ] Value.ToString())。
cmdTemp.Parameters.AddWithValue( @ Gp_NO,row.Cells [ 13 ] Value.ToString())。
cmdTemp.Parameters.AddWithValue( @ WH_NO,row.Cells [ 14 ] Value.ToString())。
cmdTemp.Parameters.AddWithValue( @ Sales_exempt,row.Cells [ 15 ] Value.ToString())。
cmdTemp.Parameters.AddWithValue( @ FACTOR,row.Cells [ 16 ] Value.ToString())。
cmdTemp.Parameters.AddWithValue( @ Category,row.Cells [ 18 ] Value.ToString())。
cmdTemp.Parameters.AddWithValue( @ IMPORTED_FROM_NO,row.Cells [ 19 ] Value.ToString())。
cmdTemp.Parameters.AddWithValue( @ IMPORTED_FROM,row.Cells [ 20 ] Value.ToString())。
cmdTemp.Parameters.AddWithValue( @ GST_Amt,row.Cells [ 23 ] Value.ToString())。
cmdTemp.Parameters.AddWithValue( @ DISCOUNT_PC_2,row.Cells [ 24 ] Value.ToString())。
cmdTemp.Parameters.AddWithValue( @ Ref_No,row.Cells [ 25 ] Value.ToString())。
cmdTemp.Parameters.AddWithValue( @ GL_DESC,row.Cells [ 27 ] Value.ToString())。
cmdTemp.Parameters.AddWithValue( @ PRODUCT_NAME_LONG,cfs.singlequotconver(strdesc)) ;
cmdTemp.Parameters.AddWithValue( @ CREATED_BY,uid.ToString());
cmdTemp.Parameters.AddWithValue( @ DATE_CREATED,cfs.sqldateconverion());
cmdTemp.Parameters.AddWithValue( @ Deleted False);
cmdTemp.Parameters.AddWithValue( @ INV_NO,ddl_Inv.Text);
cmdTemp.Parameters.AddWithValue( @ Transfer U);
cmdTemp.Parameters.AddWithValue( @ TICK C);
cmdTemp.Parameters.AddWithValue( @ ID,strInvId);
cmdTemp.Parameters.AddWithValue( @ AC_NO,cfs.singlequotconver(txt_Custcode.Text ));
cmdTemp.Parameters.AddWithValue( @ AC_NAME,cfs.singlequotconver(txt_Cus_Name.Text ));
cmdTemp.Parameters.AddWithValue( @ ITEM10,cfs.singlequotconver(LineNo)) ;
cmdTemp.Parameters.AddWithValue( @ invNo_user,ddl_Inv.Text + uid.ToString ());
cmdTemp.Parameters.AddWithValue( @ AVERAGE_COST,cfs.get_data( 从PRODUCT中选择不同的AVERAGE_COST,其中PRODUCT_NO =' + strpcode + '));
cmdTemp.Parameters.AddWithValue( @ LP_COST,cfs.get_data( 从PRODUCT中选择不同的LP_COST,其中PRODUCT_NO =' + strpcode + '));
cmdTemp.Parameters.AddWithValue( @ STD_COST,cfs.get_data( 从PRODUCT中选择不同的STD_COST,其中PRODUCT_NO =' + strpcode + '));
cmdTemp.Parameters.AddWithValue( @ QTY_UNFILLED,strqtyfilled);
cmdTemp.Parameters.AddWithValue( @ DATETIME,cfs.sqldateconverion(txt_trans_Date.Value) ));
cmdTemp.Parameters.AddWithValue( @ Batch_No,batchno);
cmdTemp.Parameters.AddWithValue( @ Expiry_Date,Expirydate);
cmdTemp.Parameters.AddWithValue( @ PRINT_ITEM,printitem);
cmdTemp.Parameters.AddWithValue( @ QTY_BILLED,Prodqty);
cmdTemp.Parameters.AddWithValue( @ ITEM6_NO,Prodqty);
cmdTemp.Parameters.AddWithValue( @ ITEM7_NO,pri);
cmdTemp.Parameters.AddWithValue( @ ITEM8_NO,net);

解决方案

新的?操作员可用于此类操作。如果左侧的值为null,则返回右侧的值。还有一个类似的?运算符,如果左边的值为null,则不调用右边的属性,而是返回null。



所以,如果你确定输入变量是一个字符串,你可以传递

  string  result = 价值 ??  ; 



如果是未知类型对象

  string  result =  value ?ToString()??  ; 


< strike>使用null-coalescing运算符:

  private   string  AlwaysAString( object  o)
{
return o。 ToString()?? ;
}



呸!不,那会抛出空引用异常......

  private   string  AlwaysAString( object  o)
{
if (o!= null return o.ToString();
return ;
}



[/ edit]

然后只需拨打电话:

 cmdTemp.Parameters.AddWithValue(  @ comment_NAME30,AlwaysAString(row.Cells [ 0 ])); 


I have taken parameters for a command and assigning gridview rows as values.When the grid view row is null,it shows error 'Object Reference not set to an instance'.I know how to assign values using variable in try block.But i want to give like this.Is there any method to convert that values to empty strings in C#.

What I have tried:

cmdTemp.Parameters.AddWithValue("@comment_NAME30", row.Cells[0].Value.ToString());
cmdTemp.Parameters.AddWithValue("PRODUCT_NO", row.Cells[1].Value.ToString());
cmdTemp.Parameters.AddWithValue("@PRODUCT_NAME", row.Cells[2].Value.ToString());
cmdTemp.Parameters.AddWithValue("@QTY", row.Cells[3].Value.ToString());
cmdTemp.Parameters.AddWithValue("@UOM", row.Cells[4].Value.ToString());
cmdTemp.Parameters.AddWithValue("@PRICE", row.Cells[5].Value.ToString());
cmdTemp.Parameters.AddWithValue("@ITEM1_NO", row.Cells[6].Value.ToString());
cmdTemp.Parameters.AddWithValue("@DISCOUNT_PC", row.Cells[7].Value.ToString());
cmdTemp.Parameters.AddWithValue("@AMOUNT", row.Cells[8].Value.ToString());
cmdTemp.Parameters.AddWithValue("@SC_NO", row.Cells[10].Value.ToString());
cmdTemp.Parameters.AddWithValue("@GL_CODE", row.Cells[11].Value.ToString());
cmdTemp.Parameters.AddWithValue("@PROJ_NO", row.Cells[12].Value.ToString());
cmdTemp.Parameters.AddWithValue("@Gp_NO", row.Cells[13].Value.ToString());
cmdTemp.Parameters.AddWithValue("@WH_NO", row.Cells[14].Value.ToString());
cmdTemp.Parameters.AddWithValue("@Sales_exempt", row.Cells[15].Value.ToString());
cmdTemp.Parameters.AddWithValue("@FACTOR", row.Cells[16].Value.ToString());
cmdTemp.Parameters.AddWithValue("@Category", row.Cells[18].Value.ToString());
cmdTemp.Parameters.AddWithValue("@IMPORTED_FROM_NO", row.Cells[19].Value.ToString());
cmdTemp.Parameters.AddWithValue("@IMPORTED_FROM", row.Cells[20].Value.ToString());
cmdTemp.Parameters.AddWithValue("@GST_Amt", row.Cells[23].Value.ToString());
cmdTemp.Parameters.AddWithValue("@DISCOUNT_PC_2", row.Cells[24].Value.ToString());
cmdTemp.Parameters.AddWithValue("@Ref_No", row.Cells[25].Value.ToString());
cmdTemp.Parameters.AddWithValue("@GL_DESC", row.Cells[27].Value.ToString());
cmdTemp.Parameters.AddWithValue("@PRODUCT_NAME_LONG", cfs.singlequotconver(strdesc));
cmdTemp.Parameters.AddWithValue("@CREATED_BY", uid.ToString());
cmdTemp.Parameters.AddWithValue("@DATE_CREATED", cfs.sqldateconverion());
cmdTemp.Parameters.AddWithValue("@Deleted", "False");
cmdTemp.Parameters.AddWithValue("@INV_NO", ddl_Inv.Text);
cmdTemp.Parameters.AddWithValue("@Transfer", "U");
cmdTemp.Parameters.AddWithValue("@TICK", "C");
cmdTemp.Parameters.AddWithValue("@ID", strInvId);
cmdTemp.Parameters.AddWithValue("@AC_NO", cfs.singlequotconver(txt_Custcode.Text));
cmdTemp.Parameters.AddWithValue("@AC_NAME", cfs.singlequotconver(txt_Cus_Name.Text));
cmdTemp.Parameters.AddWithValue("@ITEM10", cfs.singlequotconver(LineNo));
cmdTemp.Parameters.AddWithValue("@invNo_user", ddl_Inv.Text + uid.ToString());
cmdTemp.Parameters.AddWithValue("@AVERAGE_COST", cfs.get_data("select distinct AVERAGE_COST from PRODUCT where PRODUCT_NO='" + strpcode + "'"));
cmdTemp.Parameters.AddWithValue("@LP_COST", cfs.get_data("select distinct LP_COST from PRODUCT where PRODUCT_NO='" + strpcode + "'"));
cmdTemp.Parameters.AddWithValue("@STD_COST", cfs.get_data("select distinct STD_COST from PRODUCT where PRODUCT_NO='" + strpcode + "'"));
cmdTemp.Parameters.AddWithValue("@QTY_UNFILLED", strqtyfilled);
cmdTemp.Parameters.AddWithValue("@DATETIME", cfs.sqldateconverion(txt_trans_Date.Value));
cmdTemp.Parameters.AddWithValue("@Batch_No", batchno);
cmdTemp.Parameters.AddWithValue("@Expiry_Date", Expirydate);
cmdTemp.Parameters.AddWithValue("@PRINT_ITEM", printitem);
cmdTemp.Parameters.AddWithValue("@QTY_BILLED", Prodqty);
cmdTemp.Parameters.AddWithValue("@ITEM6_NO", Prodqty);
cmdTemp.Parameters.AddWithValue("@ITEM7_NO", pri);
cmdTemp.Parameters.AddWithValue("@ITEM8_NO", net);

解决方案

The new ?? operator is available for this type of operation. If the value on the left is null, it will return the value on the right. There is also a similar ?. operator, which does not call the property on the right if the value on the left is null, but returns null instead.

So, if you are sure that the input variable is a string, you can just pass

string result = value ?? "";


If it is an unknown type object

string result = value?.ToString() ?? "";


Use the null-coalescing operator:

private string AlwaysAString(object o)
    {
    return o.ToString() ?? "";
    }


[edit]Bah! No, that'll throw a null reference exception...

private string AlwaysAString(object o)
    {
    if (o != null) return o.ToString();
    return "";
    }


[/edit]
Then just call it:

cmdTemp.Parameters.AddWithValue("@comment_NAME30", AlwaysAString(row.Cells[0]));


这篇关于在C#中string为null时如何赋值为​​空的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆