如何访问嵌套类
本文关键字:嵌套 访问 何访问 | 更新日期: 2023-09-27 18:25:39
我定义了以下三个类。
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类?
问题是您已经创建了一个数组,但该数组一开始就充满了null引用。你需要这样的东西:
EntryRecord record = new EntryRecord();
record.Name = "Peter";
IntProfile.Entries[1] = record;
以用对新创建的CCD_ 1的引用来替换阵列元素。
如果您将Entries
更改为List<EntryRecord>
,并且只使用,那么几乎可以肯定会更好
EntryRecord record = new EntryRecord();
record.Name = "Peter";
IntProfile.Entries.Add(record);
或者更简单地说,使用对象初始值:
IntProfile.Entries.Add(new EntryRecord { Name = "Peter" });
我还强烈建议不要使用公共字段;请改用属性,如果可以的话,请考虑使类型不可变。
(我鼓励您考虑是否真的也需要IntProfile
字段是静态的…静态字段意味着全局状态,这更难测试和推理。)