1

我有一个名为data的对象,它属于该类,

[DataContract]
public class names
{
    [DataMember(Name = "code")]
    public int Code { get; set; }

    [DataMember(Name = "message")]
    public string Message { get; set; }

    [DataMember(Name = "values")]
    public values values{ get; set; }
}

其中 values 是另一个具有自己变量的类,最初是在执行以下代码时,

names data= new names();
data.values.Name = "";

执行第二行时出现空异常。

有什么问题?为什么 data.values.Name 即使在执行后仍然为空

names data= new names();

我应该怎么做才能赋予它一些价值?

4

4 回答 4

7

也初始化值。

names data= new names();
data.values = new values();
于 2013-10-24T14:30:07.700 回答
3

除了不命名您的班级之外,object这只是自找麻烦。您无法访问属性,values因为您从未对其进行初始化。您的类需要一个构造函数,其中values设置为某些内容。否则,您需要在尝试访问之前设置值。

所以要么这样:

[DataContract]
public class object
{
    [DataMember(Name = "code")]
    public int Code { get; set; }

    [DataMember(Name = "message")]
    public string Message { get; set; }

    [DataMember(Name = "values")]
    public values values{ get; set; }

    public object()
    {
        values = new values();
    }
 }

或者你可以这样做:

 object data= new object();
 data.values = new values();
 data.values.Name = "";

没有上下文很难说哪个更适合你。

于 2013-10-24T14:31:28.010 回答
1

好的,我将通过猜测名称object只是一个错误的名称选择来说明您的问题(正如其他人所说,您不想选择此名称(如果允许)。

您面临的问题是 Values 属性未初始化,因此给您一个例外。以下是您可以采取哪些措施来避免这种情况的示例:

public class MyObject
{
    public MyObject()
    {
        this.Values = new Values();
    }

    public int Code { get; set; }
    public string Message { get; set; }
    public Values Values { get; set; }
}

public class Values
{
    public string Name { get; set; }
}

如您所见,我在 yout 对象的构造函数中初始化了 Values 属性。

于 2013-10-24T14:33:32.427 回答
0

上课:

[DataContract]
//I've renamed it to stop it hurting my eyes.
public class myClass
{
    [DataMember(Name = "code")]
    public int Code { get; set; }

    [DataMember(Name = "message")]
    public string Message { get; set; }

    [DataMember(Name = "values")]
    public values values{ get; set; }
}

如果你改变

myClass data= new myClass();
data.values.Name = "";

至:

myClass data= new myClass();
data.values = new values();
data.values.Name = "";

这现在可以工作了。

假设:

public class values
{
   //empty constructor??
   public values()
   {

   }
   public string Name { get; set; }
}
于 2013-10-24T14:31:37.980 回答