[英]possible null reference argument for parameter 's' parse in 'double double.Parse(string s)'
可能的 null 參數“s”在“double double.Parse(string s)”中解析的參考參數
dr = cm.ExecuteReader();
while (dr.Read())
{
i += 1;
_total += double.Parse(s: dr["total"].ToString()); // warning message
dataGridView1.Rows.Add(i, dr["id"].ToString(), dr["transno"].ToString(), dr["pcode"].ToString(), dr["pdesc"].ToString(), dr["price"].ToString(), dr["qty"].ToString(), dr["disc"].ToString(), dr["total"].ToString());
}
C# 不知道您的列的值。 這就是您收到此警告的原因。 當列的值為 null 時,在 null 上調用.ToString()
會在運行時導致NullReferenceException
。
當您知道此列 100% 存在時,您可以這樣做以消除警告:
dr["total"]!.ToString()
或者更好:使用像 Dapper 這樣的對象映射框架。 它將為您節省大量時間。
警告的原因是dr["total"]
可以返回null
(如果光標中沒有字段"total"
)並且.ToString()
將拋出異常。
如果您確定現場確實存在風雨無阻的情況,您可以使用null 寬容接線員關閉此警告!
:
// using: do not forget to Dispose IDisposable (dr)
using var dr = cm.ExecuteReader();
while (dr.Read()) {
i += 1;
_total += Convert.ToDouble(dr["total"]!);
dataGridView1.Rows.Add(i,
dr["id"]!.ToString(),
dr["transno"]!.ToString(),
dr["pcode"]!.ToString(),
dr["pdesc"]!.ToString(),
dr["price"]!.ToString(),
dr["qty"]!.ToString(),
dr["disc"]!.ToString(),
dr["total"]!.ToString());
}
請注意,我們可以擺脫string
之間的相互轉換,讓 .net 使用Convert
值
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.