嗨,假设有这两种方法:
private List<IObjectProvider> GetProviderForType(Type type)
{
List<IObjectProvider> returnValue = new List<IObjectProvider>();
foreach (KeyValuePair<Type, IObjectProvider> provider in _objectProviders)
{
if ((provider.Key.IsAssignableFrom(type) ||
type.IsAssignableFrom(provider.Key)) &&
provider.Value.SupportsType(type))
{
returnValue.Add(provider.Value);
}
}
return returnValue;
}
private IEnumerable<IObjectProvider> GetProviderForType1(Type type)
{
foreach (KeyValuePair<Type, IObjectProvider> provider in _objectProviders)
if ((provider.Key.IsAssignableFrom(type) ||
type.IsAssignableFrom(provider.Key)) &&
provider.Value.SupportsType(type))
yield return provider.Value;
}
哪种方法更快?当我看第一种方法时,我发现为List分配了内存,而在我看来这是不必要的。对我来说,IEnumerable 方法似乎更快。
例如,假设你调用
int a = GetProviderForType(myType).Count;
int b = GetProviderForType1(myType).Count();
现在,另一个问题是,这两种方法之间是否存在性能差异?
你认为呢?