【发布时间】:2012-11-02 22:03:39
【问题描述】:
如何通过实现 Array Wrapper 来最小化开销?
1 为 MyProviderInfos 选择哪种接口/类型?
2 使用 private static 枚举器是否合理? 不,从
answer
3 应该 MyProviderInfos 是一个属性以及如何保护其成员免受修改? 成员的内部/私有设置器(来自相同的答案)
我尝试浏览有关 ICollection、Readonly-Collection、List、IList、Array 的 SO 文章,但仍然对最适合该场景的内容感到困惑:
- 数组 MyProviderInfos 由编译时形成,不会(不得)在运行时更改。
- 该类(必须)是可枚举的(使用数组 MyProviderInfos 的元素)并且不需要自定义列表函数(.Add .Remove)。
- 类有静态函数,使用数组。
- 类必须是非静态的才能支持索引。
代码:
public class MyIdentifiers : IEnumerable<MyProviderInfo>
{
//public static IList<MyProviderInfo> getMyProviderInfos()
//{ return MyProviderInfos; }
public static int MyProviderCount()
{
return MyProviderInfos.Count;
}
public static readonly IList<MyProviderInfo> MyProviderInfos = new[]
{
new MyProviderInfo
{
MyProvider = MyProvider.FirstProvider,
Url = "https://www.google.com",
}
};
private static IEnumerator<MyProviderInfo> _enumerator =
((IEnumerable<MyProviderInfo>)MyProviderInfos).GetEnumerator();
public IEnumerator<MyProviderInfo> GetEnumerator()
{
return _enumerator;
//return ((IEnumerable<MyProviderInfo>)MyProviderInfos).GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
【问题讨论】:
标签: c# arrays list static enumerator