如何访问嵌套类?
问题描述:
我有以下三个定义的类。如何访问嵌套类?
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]“对象refe “}
作为C#的新手,我如何访问嵌套的Entries类?
答
问题是你已经创建了一个数组,但该数组只是充满了空引用。你需要这样的:
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
场是静态的,太......静态字段意味着全球性的状态,这是很难测试和推理。)
A“嵌套“类将是另一个类中定义的类。 – crashmstr 2014-10-06 15:09:09
你可以使用['struct EntryRecord'](http://msdn.microsoft.com/en-us/library/ah19swz4.aspx)而不是'class' – Grundy 2014-10-06 15:13:37
@Grundy:是的,但是然后OP会有一个大的可变结构...几乎不是一个更好的情况,海事组织。 – 2014-10-06 15:15:09