Ond*_*lka 0 c# linq collections complexity-theory oftype
看看这段代码.
interface ILoader
{
}
interface ILoader<T>: ILoader
{
T Load();
}
class CarLoader: ILoader<Car>
{
...
}
class TrainLoader: ILoader<Train>
{
...
}
class Container
{
List<ILoader> loaders = new ILoader[] { new CarLoader(), new TrainLoader()};
public T Load<T>()
{
// Finding right loader
var loader = loaders.OfType<ILoader<Car>>.FirstOrDefault();
return loader.Load();
}
}
Run Code Online (Sandbox Code Playgroud)
我有大约100个装载机,我需要加载很多火车,汽车等.我认为装载机列表非常慢(有OfType()线性复杂性??),你建议使用什么而不是列表?Dictionary<Type,ILoader>或Hashtable<Type,ILoader>或HashSet<ILoader>?例如使用hashset.OfType<ILoader<Car>>(),列表或更快的速度有多快?
Dictionary<Type, ILoader>使用加载器构建并填充它.然后你可以这样做:
ILoader<T> loader = (ILoader<T>) loaderDictionary[typeof(T)];
Run Code Online (Sandbox Code Playgroud)
另一方面,如果您只需要查看100个项目,即使线性扫描也不会花费很长时间.您是否真的对真实使用情况进行了基准测试并发现这是您的瓶颈?