You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Company类中创建Address字段以复用Main方法中的Address实例

如何让Company类使用Main方法中的Address实例

要让Company类能够用上Main方法里创建的Address实例,核心是在Company类里添加一个Address类型的成员(字段或属性),再把外部的Address实例传递进去。下面给你两种实用的实现方式:

方式一:通过构造函数传递(推荐)

这种方式能确保Company对象在创建时就拥有有效的Address实例,避免后续出现空引用问题,也符合依赖注入的设计原则。

首先修改Company类,添加一个Address字段和对应的构造函数:

public class Company
{
    // 声明Address类型的私有字段(如果需要外部访问可以改成public或者加属性)
    private readonly Address _address;

    // 构造函数接收Address实例并赋值给字段
    public Company(string name, Address address)
    {
        Name = name;
        _address = address;
    }

    public string Name { get; set; }

    // 如果需要在外部访问Address,可以添加一个只读属性
    public Address Address => _address;
}

然后在Main方法中创建Company实例时,把已经创建好的address传进去:

class Program {
    public static void Main() {
        var address = new Address("56 Main St", "Mesa", "AZ", "38574");
        // 把address作为参数传给Company的构造函数
        var testCompany = new Company("testCompany", address);
        
        // 现在testCompany就可以使用这个Address实例了
        Console.WriteLine(testCompany.Address.Street);
    }
}

方式二:通过公共属性设置

如果需要更灵活的设置(比如创建Company实例后再指定Address),可以给Company类添加一个公共属性:

修改后的Company类:

public class Company
{
    public Company(string name)
    {
        Name = name;
    }

    public string Name { get; set; }
    // 公共Address属性,允许外部设置和访问
    public Address Address { get; set; }
}

在Main方法中创建实例后再赋值:

class Program {
    public static void Main() {
        var address = new Address("56 Main St", "Mesa", "AZ", "38574");
        var testCompany = new Company("testCompany");
        // 给Company的Address属性赋值
        testCompany.Address = address;
        
        // 同样可以使用这个Address实例
        Console.WriteLine(testCompany.Address.City);
    }
}

另外别忘了补全Address类的构造函数,这样才能正常创建实例:

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

    // 构造函数初始化各个属性
    public Address(string street, string city, string state, string zipCode)
    {
        Street = street;
        City = city;
        State = state;
        ZipCode = zipCode;
    }
}

内容的提问来源于stack exchange,提问作者Dathon Weber

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:03:12