具有强制参数的类

时间:2010-12-30 12:21:36

标签: c#-3.0

我有一些必填字段,当我调用我的类的构造函数时,我得到了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; 
} 

2 个答案:

答案 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...
}

这将使用空字符串替换属性中的任何空值。但是,您可能希望将其作为错误情况处理,具体取决于具体情况。