创建主类的对象,该对象依次实例化其其他成员类
本文关键字:对象 实例化 成员类 其他 创建 | 更新日期: 2023-09-27 18:26:06
有没有办法只创建包含其他类的Main类的对象。
public class City
{
public int CityId { get; set; }
public string CItyName { get; set; }
}
public class State
{
public int StateId { get; set; }
public string StateName { get; set; }
}`
public class CurrentPresident
{
public int PresidentId { get; set; }
public string PresidentName { get; set; }
}
public class Country
{
public int CountryId { get; set; }
public CurrentPresident President { get; set; }
public IList<State> States { get; set; }
public IList<City> Cities { get; set; }
}
我有四个不同的班级,我的乡村班有不同的班级作为成员现在我只想创建Country类的对象,而不是Country类中的其他类。
Country country=new Country();
为了更清楚地表明,我不想创建City、State和CurrentPresident类的对象。我只想创建Country类的对象,它反过来也实例化Country类中的其他类。
非常感谢
尽管不确定原因,但如果在创建Country
时不想创建其他对象,请使Country
内的getter返回一个私有字段,并初始化getter中的字段。这样,属性只会在您第一次访问时创建,而不是在国家/地区的ctor中创建,因为它们是在您访问它们时创建的,所以您不需要在国家/地方之外创建它们。
public class Country
{
....
public CurrentPresident President
{
get
{
if (_president == null)
{
_president = new CurrentPresident();
}
return _president;
}
//no setter as outside objects don't need to create them
}
....
private CurrentPresident _president
}
您的国家/地区类别应遵循
public class Country
{
public int CountryId { get; set; }
public CurrentPresident President { get; set; }
public IList<State> States { get; set; }
public IList<City> Cities { get; set; }
public Country()
{
States = new List<State>();
Cities =new List<City>();
}
}
并不是说当您使用对象初始化时它将不起作用。在那里你需要使用一些技巧。
据我所知,您希望创建一个Country,但不填充类的内容。换句话说,你希望这个国家是空的,并且在创建时可以使用。
您可以使用构造函数来实现这一点:
public class Country
{
public int CountryId { get; set; }
public CurrentPresident President { get; set; }
public IList<State> States { get; set; }
public IList<City> Cities { get; set; }
public Country()
{
this.CountryId = 0;
this.CurrentPresident = null; // Country is brand new, no president elected :-)
this.States = new List<State>();
this.Cities = new List<City>();
}
}
您必须在主对象构造函数内实例化所有内部对象。例如:
public class City
{
public int CityId { get; set; }
public string CItyName { get; set; }
}
public class State
{
public int StateId { get; set; }
public string StateName { get; set; }
}
public class CurrentPresident
{
public int PresidentId { get; set; }
public string PresidentName { get; set; }
}
public class Country
{
public Country()
{
this.President = new CurrentPresident();
this.States = new List<State>();
this.Cities = new List<City>();
}
public int CountryId { get; set; }
public CurrentPresident President { get; set; }
public IList<State> States { get; set; }
public IList<City> Cities { get; set; }
}
请记住,尽管每个对象都存在,但里面的所有对象仍然是空的(没有PresidentId
、空List
s等)
根据需要,您可能希望创建具有不同参数的不同构造函数。例如,您可能希望在创建Country
时提供CurrentPresident
,以便它始终具有有效数据。