Nav*_*K N 4 c# c++ generics templates
我有两个类和一个界面
interface IVehicle
{
void Drive();
}
class Benz :IVehicle
{
public void Drive()
{
Console.WriteLine("WOW! driving benz");
}
}
class Ferrari : IVehicle
{
public void Drive()
{
Console.WriteLine("WOW! driving ferrari");
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个使用它的Driver类.
class Driver
{
public void StartDriving(IVehicle vehicle)
{
vehicle.Drive();
}
}
Run Code Online (Sandbox Code Playgroud)
还有一个通用的驱动程序.
class GenericDriver
{
public void StartDriving<T>() where T : IVehicle , new()
{
T vehicle = new T();
vehicle.Drive();
}
}
Run Code Online (Sandbox Code Playgroud)
问题
有什么想法吗?
Tin 的实例Drive(),这可以在没有泛型的情况下完成delegate IVehicle VehicleBuilder();现在我为什么要通用Driver.考虑:
class Driver<TVehicle>
where TVehicle : class, IVehicle, new()
{
public TVehicle Vehicle { get; set }
public Driver()
{
Vehicle = new TVehicle();
}
}
Run Code Online (Sandbox Code Playgroud)
通过这种方式,我将能够使用强类型Driver<>.Vehicle属性,该属性将是特定类型,而不是更常见的属性IVehicle.
| 归档时间: |
|
| 查看次数: |
342 次 |
| 最近记录: |