MST
星途 面试题库

面试题:Visual Basic对象初始化器在复杂对象中的应用

假设有一个自定义类`Person`,包含属性`Name`(字符串类型)、`Age`(整数类型)和`Address`(自定义类`Address`,包含`City`、`Street`属性)。请使用对象初始化器创建一个`Person`对象,并初始化其所有属性。同时说明在初始化嵌套对象时可能遇到的问题及解决方案。
40.1万 热度难度
编程语言Visual Basic

知识考点

AI 面试

面试题答案

一键面试

以下是使用C#语言实现的代码示例:

class Address
{
    public string City { get; set; }
    public string Street { get; set; }
}

class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
    public Address Address { get; set; }
}

class Program
{
    static void Main()
    {
        Person person = new Person
        {
            Name = "张三",
            Age = 30,
            Address = new Address
            {
                City = "北京",
                Street = "长安街"
            }
        };
    }
}

初始化嵌套对象时可能遇到的问题及解决方案:

  • 问题
    • 空引用异常:如果在初始化外部对象时,没有正确初始化嵌套对象,在访问嵌套对象的属性时可能会抛出空引用异常。例如,如果写成Person person = new Person { Name = "李四", Age = 25 };,然后尝试访问person.Address.City,就会出现空引用异常,因为person.Address未初始化。
  • 解决方案
    • 在对象初始化器中正确初始化嵌套对象:如上述代码,在初始化Person对象时,同时使用对象初始化器对Address对象进行初始化。
    • 在类的构造函数中初始化:在Person类的构造函数中初始化Address对象,这样可以确保Address对象始终有值。例如:
class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
    public Address Address { get; set; }

    public Person()
    {
        Address = new Address();
    }
}

这样即使在使用对象初始化器时没有显式初始化Address,它也不会为空。