srting不会在c#中转换为null值 [英] srting does not convert in null value in c#

查看:221
本文介绍了srting不会在c#中转换为null值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在将字符串转换为空值,但它返回0但我想要空值而不是0.



我的代码是





  public   decimal ? HwareCost {获取;  set ; } 

decimal tmpHwareCost = 0 .0m;
if (Decimal.TryParse(Convert.ToString((dataRow [ HwareCost])), out tmpHwareCost))
itAreaList.HwareCost = tmpHwareCost;





plz帮帮我

解决方案

很少代码中需要注意的事项。

  1 )Convert.ToString(dataRow [  HwareCost])



它将转换对象并将返回字符串,如果object为null,则返回空/空字符串。



  2 )Decimal.TryParse 



它会尝试将对象转换为十进制,如果object为null,则它将0指定为out变量。 />


如果你想在你的小数属性中有一个空对象,那么就像这样做代码。



< pre lang =c#> if (!Convert.IsDBNull(dataRow [ HwareCost]))
{
itAreaList.HwareCost = Convert.ToDe cimal(dataRow [ HwareCost]);
}
else
{
itAreaList.HwareCost = null ;
}


DataRow字段扩展方法如下 [ ^ ]

< pre lang =c#> HwareCost = dataRow.Field< decimal?> HwareCost);





LINQPAD示例代码:

 小数? HwareCost1 { get ;  set ; } 
decimal ? HwareCost2 { get ; set ; }
void Main()
{
var table = GetTable ();
// 读取第一行值
HwareCost1 = table.Rows [ 0 ]。字段< decimal?> HwareCost);
// HwareCost1.Dump(); //25.44
// 读取第二行值
HwareCost2 = table.Rows [ 1 ]。字段< decimal?> HwareCost);
// HwareCost2.Dump(); // null
}

静态 DataTable GetTable()
{
DataTable表= new DataTable();
DataColumn列;
column = new DataColumn( HwareCost
System.Type.GetType( System.Decimal)) ;
column.AllowDBNull = true ;
table.Columns.Add(column);
table.Columns.Add( Date typeof运算(DateTime的));
table.Rows.Add( 25 .44m,DateTime.Now);
table.Rows.Add( null ,DateTime.Now);
return 表;
}


试试..

  if (!String.IsNullorEmpty(Convert.ToString((dataRow [  HwareCost])))
{
itAreaList.HwareCost = Convert.ToDecimal((dataRow [ HwareCost]);
}
else
{
itAreaList.HwareCost = null ;
}


i am converting string to null value but it returns 0 but i want null value instead of 0.

my code is


public decimal? HwareCost { get; set; }

decimal tmpHwareCost = 0.0m;
if (Decimal.TryParse(Convert.ToString((dataRow["HwareCost"])), out tmpHwareCost))
itAreaList.HwareCost = tmpHwareCost;



plz help me

解决方案

There are few things in your code to notice.

1)Convert.ToString(dataRow["HwareCost"])


It will convert the object and will return the string and if object is null then it returns a blank/empty string.

2)Decimal.TryParse


It will try to convert the object into decimal and if object is null then it will assign 0 to out variable.

If you want to have a null object into your decimal property then do the code like this.

if(!Convert.IsDBNull(dataRow["HwareCost"]))
{
   itAreaList.HwareCost = Convert.ToDecimal(dataRow["HwareCost"]);
}
else
{
   itAreaList.HwareCost =  null;
}


DataRow Field extension method as below[^]

HwareCost = dataRow.Field<decimal?>("HwareCost");



LINQPAD sample code:

decimal? HwareCost1 { get; set; }
decimal? HwareCost2 { get; set; }
void Main()
{
	var table = GetTable();
        //read first row value 
	HwareCost1 = table.Rows[0].Field<decimal?>("HwareCost") ;
	//HwareCost1.Dump(); //25.44
        //read 2nd row value 
	HwareCost2 = table.Rows[1].Field<decimal?>("HwareCost") ;
	//HwareCost2.Dump(); //null
}

static DataTable GetTable()
{
	DataTable table = new DataTable();
	DataColumn column;
	column = new DataColumn("HwareCost", 
	System.Type.GetType("System.Decimal"));
	column.AllowDBNull = true;
	table.Columns.Add(column);
	table.Columns.Add("Date", typeof(DateTime));
	table.Rows.Add(25.44m,DateTime.Now);
	table.Rows.Add(null,DateTime.Now);
	return table;
}


try..

if (!String.IsNullorEmpty(Convert.ToString((dataRow["HwareCost"])))
{
 itAreaList.HwareCost = Convert.ToDecimal((dataRow["HwareCost"]);
}
else
{
itAreaList.HwareCost=null;
}


这篇关于srting不会在c#中转换为null值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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