NullReferenceException,如何初始化成员 class Blazor

NullReferenceException, How to initialize member class Blazor

我有一个页面,里面有一个简单的表单,它绑定到我模型的成员 class,我收到以下错误

NullReferenceException: Object reference not set to an instance of an object.

我的页面(如下所示)在我不使用 Timelineinfos 时工作正常,但当我引用它时出现错误。所以我的问题是:我应该如何初始化 Timelineinfos?

<div class="row">
    <div class="col-7">
        <EditForm Model="test">
            <InputText @bind-Value="test.Timelineinfos.City"></InputText>
        </EditForm>
    </div>
</div>

@code {
    public testmodel test = new testmodel();

    public class testmodel
    {
        public string Name { get; set; }
        public Timelineinfo Timelineinfos { get; set; }
    };
}

异常的原因是我们没有初始化Timelineinfos的值,留下null,然后通过绑定test.Timelineinfos.City尝试访问它的一个成员.因为没有 Timelineinfos 的实例,所以等于 null.City,这当然是没有意义的。

您可以通过多种方式初始化该值。

通过使用对象初始值设定项的构造函数:

public testmodel test = new testmodel() { Timelineinfos = new Timelineinfo() };

... 这是以下内容的语法糖:

testmodel test = new testmodel();
test.Timelineinfos = new Timelineinfo();

通过为 属性 实施默认值:

public Timelineinfo Timelineinfos { get; set; } = new Timelineinfos();

... 这与在默认(无参数)构造函数中设置它们基本相同:

public testmodel()
{
    this.Timelineinfos = new Timelineinfos();
}

无论如何,一旦你有一个实例,你的 NullReferenceException 将不再存在。