我有一些必填字段,当我调用我的类的构造函数时,我得到了null引用异常,请如何防止这种情况。
new Part(Partitems["Name"].ToString(), Partitems["Logo"].ToString(), Partitems["Description"].ToString(), Partitems["URL"].ToString()));
我的班级:
public class Part
{
string _Name= string.Empty;
public string Name
{
get { return _Name; }
set { _Name = value; }
}
... ..
修改 这是构造函数代码
public Part(string Name, string Logo, string Description, string URL)
{
this.Name = Name;
this.Logo = Logo;
this.Description = Description;
this.URL = URL;
}
答案 0 :(得分:2)
可能是此属性之一
Partitems["Name"], Partitems["Logo"],Partitems["Description"],Partitems["URL"]
是空的?您的构造函数代码将有助于更多地理解问题...
答案 1 :(得分:0)
构造函数中没有任何内容可能导致空引用异常,因为将null赋给字符串属性是完全有效的。因此,您的Partitems
变量为null,或者其中一个属性返回null。
处理这两种情况的示例:
if (Partitems != null) {
object name = Partitems["Name"] ?? String.Empty;
object logo = Partitems["Logo"] ?? String.Empty;
object description = Partitems["Description"] ?? String.Empty;
object url = Partitems["URL"] ?? String.Empty;
part = new Part(name.ToString(), logo.ToString(), description.ToString(), url.ToString()));
} else {
// Oops, Partitems is null. Better tell the user or log the error...
}
这将使用空字符串替换属性中的任何空值。但是,您可能希望将其作为错误情况处理,具体取决于具体情况。