如何访问嵌套类?

时间:2014-10-06 15:07:33

标签: c#

我定义了以下三个类。

public class FrequencyRecord
{
    public double Frequency;
    public int Duration;
}

public class EntryRecord
{
    public string Name;
    public Boolean Status;
    public long TotalTime;
    public FrequencyRecord[] FreqTime = new FrequencyRecord[25];
    public string Description;
}

public class Salv7Profile
{
    public string Version;
    public string SoftVersion;
    public string Name;
    public DateTime CreateDate;
    public DateTime LastModDate;
    public int Count;
    public EntryRecord[] Entries = new EntryRecord[99];
    public int Type;                         
}

然后我创建一个实例:

public static Salv7Profile IntProfile = new Salv7Profile();

将值分配给:

IntProfile.Name = "Peter"; 

工作正常,但如果我尝试:

IntProfile.Entries[1].Name = "Peter"; 

抛出错误:[System.NullReferenceException]“对象引用未设置为对象的实例。”}

作为C#的新手,如何访问嵌套的Entries类?

1 个答案:

答案 0 :(得分:5)

问题在于您已经创建了一个数组,但该数组只是以空引用开头。你需要这样的东西:

EntryRecord record = new EntryRecord();
record.Name = "Peter";
IntProfile.Entries[1] = record;

使用对新创建的EntryRecord的引用替换数组元素。

如果您将Entries更改为List<EntryRecord>,那几乎肯定会更好,并且只是使用了:

EntryRecord record = new EntryRecord();
record.Name = "Peter";
IntProfile.Entries.Add(record);

或更简单地说,使用对象initialzier:

IntProfile.Entries.Add(new EntryRecord { Name = "Peter" });

我也强烈建议不要使用公共字段;请改用属性,如果可以,请考虑使您的类型不可变。

(我鼓励思考你是否真的需要IntProfile字段也是静态的...静态字段意味着全局状态,这更难测试和理由。)