在创建部分关系时使用嵌套类型(而不是使用该类类型的变量/字段数据)的好处是什么(示例引擎是Car的一部分)
换句话说,以下是有什么区别的:
(1)
换句话说,以下是有什么区别的:
(1)
public class Engine { //some attributes like engine type and constructor . . . } public class Car { Engine e; Public Car(string type) { e = new Engine(type); } ....... }
和
(2)
public class Car { public class Engine { . . . } }
然后你可以做类似的事情
Car.Engine e; e = new Car.Engine(); e.type = something;
解决方法
我想说嵌套类型的使用是为了组织和特异性.在您的示例中,嵌套类的问题在于引擎是所有类型车辆的必要对象,因此将其嵌套在特定车辆中并不是很有意义.
你可以说也许使用名称空间仍然会更好;毕竟,如果你将Engine类放在命名空间CarsAreCool.Car中,你仍然可以通过Car.Engine引用该对象,但这与Car类的引擎类型的暴露属性没有什么不同.
所以这是我认为有用的地方:
假设我们有一个界面IVehicle,我们所有的车辆都实施,以及与车辆相关的其他一般类别.
public interface IVehicle { public Engine Engine; public int PassengerCapacity; public int NumberOfWheels; }
汽车,卡车,货车,摩托车等都会实现这一点,因为它是一种车辆.现在以摩托车类为例.头盔是摩托车特有的东西,它们本身也有一些属性,所以有一个属性HelmetColor,HelmetSize,HelmetVisorType关闭摩托车会不会有点麻烦?将这些作为Helmet类的属性显然是有意义的.因此,您可以嵌套该类,这样只有在谈到摩托车时才能访问它,并且它允许您以更清晰的方式组织属性.
public class Motorcycle : IVehicle { #region IVehicle implementation #endregion #region nested Types public sealed class Helmet { public string Color; public string Size; public string VisorType; public bool requiredByLaw; } public Helmet Helmet; public decimal Mileage; #endregion }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。