Sha*_*ane 4 c# generics dictionary key-value
我倾向于严重依赖仿制药,但我担心我会误用它们.
例如,我有一个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)];
}
}
Run Code Online (Sandbox Code Playgroud)
我正在讨论使用的替代方法只是使函数使用参数:void DetachComponent(Type componentType),但我不喜欢调用每个方法,如:entity.DetachComponent(typeof(ColorComponent));
这是滥用泛型吗?我通常对容器类执行此操作,因为使用类型作为键的键值对对我来说很有意义.
我没有看到它有什么问题.
对于DetachComponent,使用泛型只是不必要的 - 你不会将类型作为泛型参数传递而不是仅传递常规(Type componentType)参数.
对于GetComponent,使用泛型允许您在编译时返回正确的类型,而不需要调用代码.在这里,使用泛型是有道理的.
自从使用泛型
GetComponent和有意义DetachComponent,我认为,出于一致性的原因,将它用于两者是有意义的(即,完全按照您的方式完成).
| 归档时间: |
|
| 查看次数: |
142 次 |
| 最近记录: |