我是不是滥用了C#泛型
本文关键字:泛型 是不是 | 更新日期: 2023-09-27 18:20:44
我倾向于严重依赖泛型,但我担心我会滥用它们。
例如,我有一个Entity
,它包含Component
的子类的字典,组件的类型是键,组件是值。例如PositionComponent
、ColorComponent
等
我有分离和获取组件的方法,定义如下:
class Entity
{
Dictionary<Type, Component> components;
//...
void DetachComponent<T>()
where T : Component
{
components.Remove(typeof(T));
}
T GetComponent<T>()
where T : Component
{
return (T)components[typeof(T)];
}
}
我正在讨论的另一种方法是简单地让函数使用一个参数:void DetachComponent(Type componentType)
,但我不喜欢调用每个方法,比如:entity.DetachComponent(typeof(ColorComponent));
这是滥用仿制药吗?我通常对容器类这样做,因为键值对使用类型作为键对我来说是有意义的
我看不出有什么问题。
对于DetachComponent来说,使用泛型是完全不必要的——将类型作为泛型参数传递,而不仅仅是传递常规的(Type componentType)
参数,不会带来任何好处。
对于GetComponent,使用泛型可以在编译时返回正确的类型,而调用代码不必强制转换。在这里,使用泛型是有意义的。
由于使用了泛型
- 对
GetComponent
和 - 对CCD_ 9无损伤
我认为,出于一致性的原因,两者都使用它是有意义的(即,做你已经做过的事情)。