[英]Object reference not set to an instance of an object [C#]
我收到以下错误:
Object reference not set to an instance of an object
我不知道此错误的原因是什么以及如何解决,这是我的代码:
while(dr.Read())
{
string variant = dr.GetString(0);
int size = dr.GetInt32(1);
int quantity = dr.GetInt32(2);
DataRow x = dt.Rows
.Cast<DataRow>()
.Where(r => r["variant_name"].Equals(variant) && r["size"].Equals(size))
.FirstOrDefault();
x["quantity"] = quantity;
}
我在这条线上出现错误-> x["quantity"] = quantity;
我想知道为什么它会给出一个空值,因为我在数据库中检查它应该返回一个完全匹配的值。
如果找不到元素,并且您尝试访问此对象,则FirstOrDefault返回null。
在最后一行x为空,用
if(x != null)
x["quantity"] = quantity;
如果您的条件(.Where)不匹配,则会发生这种情况。
此时, FirstOrDefault
返回Default部分
这是MSDN中解释的参考对象的null
引用和可为null的类型的默认值为null。
while(dr.Read())
{
string variant = dr.GetString(0);
int size = dr.GetInt32(1);
int quantity = dr.GetInt32(2);
DataRow x = dt.Rows
.Cast<DataRow>()
.Where(r => (r["variant_name"].ToString().Equals(variant) && Convert.ToInt32(r["size"]).Equals(size)))
.FirstOrDefault();
if (x != null)
{
x["quantity"] = quantity;
}
}
谢谢您的回答,这对我很有帮助。 我只是更改了线路.Where
在.Where
有一点点,现在对我.Where
。 再次感谢你!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.