将空值传递给float数据类型以将其添加到列表中

时间:2013-12-06 13:09:17

标签: c# list xml-parsing null

我正在尝试将null值传递给float数据类型,如下所示,

float? period_final_value = null; 

从解析xml字符串中获取 period_final_value 中的值,如下所示

var action = xmlAttributeCollection_for_period["value"];
xmlActionsone[j] = action.Value;
period_final_value = float.Parse(action.Value); 

然后将此获得的值添加到列表中,如下所示

serie_line.data.Add(period_final_value);

按如下方式定义我的清单

var serie_line = new { name = series_name, data = new List<float?>() };

现在,我的问题是,当我尝试传递值时,它会被添加到列表中,并且当没有识别出值时,它应该添加null,其值在列表中的空值位置但我不喜欢#39;我知道我无法正常工作......我的网络服务崩溃了,它会反击任何空白值...任何帮助将不胜感激......

plz note ... var serie_line ..我将序列化为JSON格式,以便我可以使用这些值来绘制图表。

2 个答案:

答案 0 :(得分:1)

听起来您可能正在寻找TryParse而不是Parse

当您致电period_final_value = float.Parse(action.Value);时,Parse会将字符串解析为float或抛出异常。它永远不会返回null

要获得所需的行为,请尝试以下方法:

float temp_value = 0;
float? period_final_value = null;
if (float.TryParse(action.Value, out temp_value)) {
    period_final_value = temp_value;
}

serie_line.data.Add(period_final_value);

如果action.Value是数字的字符串表示,则period_final_value将是该数字。否则,它将是null。然后,您可以将其添加到float?值列表中。

答案 1 :(得分:0)

在这一行

float? period_final_value = float.Parse(action.Value); 

你正在失去可空的浮动。当它无法解析(没有值或值不是有效的float)时,它抛出而不是返回null。 period_final_value永远不会将null作为值。

请参阅gleng的答案,以便能够将null设置为period_final_value