在创建部分关系时使用嵌套类型(而不是使用该类类型的变量/字段数据)的好处是什么(示例引擎是Car的一部分) 换句话说,以下是有什么区别的: (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;
答案 0 :(得分:1)
我想说嵌套类型的使用是为了组织和特异性。在您的示例中,嵌套类的问题是Engine
是所有类型车辆的必要对象,因此将其嵌套在特定车辆中是没有意义的。
你可以说也许使用命名空间仍然会更好;毕竟,如果你将Engine
类放在namespace CarsAreCool.Car
之内,你仍然可以通过Car.Engine
引用该对象,但这与Engine
类型的公开属性没有什么不同在Car
类上。
所以这里我认为它很有用:
假设我们所有车辆都有一个接口IVehicle
,以及与车辆相关的其他一般类别。
public interface IVehicle
{
public Engine Engine;
public int PassengerCapacity;
public int NumberOfWheels;
}
Car
,Truck
,Van
,Motorcycle
等都会实现这一点,因为它是一种类型的工具。现在以Motorcycle
类为例。头盔是摩托车特有的东西,它们本身也有一些属性,所以有一个属性HelmetColor
,HelmetSize
,HelmetVisorType
关闭{{1}会有点单调乏味不是吗?显然,这些属于Motorcycle
类的属性。因此,您可以嵌套该类,这样只有在谈论摩托车时才能访问它,并且它允许您以更清晰的方式组织属性。
Helmet
答案 1 :(得分:0)
当对象应该具有一些额外的功能并且您不想在对象本身中实现它时,使用嵌套类型。并不总是需要使用它。例: 考虑一下你正在创造一款赛车。因此,汽车需要有轮胎,发动机和车身。 虽然发动机可以有Turbo或没有。没有必要为Turbo设备。这里的涡轮增压器为汽车发动机增加了一些额外的功能。
public class Car
{
public Engine Engine;
public List<Tire> Tires;
}
public class Engine
{
public string Type;
public string Cylinder;
public class Turbo
{
public string Name;
public string Power;
public void CalculatePower()
{
}
}
}
public class Tire
{
}