簡體   English   中英

可能的 null 參數“s”在“double double.Parse(string s)”中解析的參考參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM