如何访问嵌套类

本文关键字:嵌套 访问 何访问 | 更新日期: 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字段是静态的…静态字段意味着全局状态,这更难测试和推理。)