如何在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
相关产品推荐
相关产品推荐

