Array Wrapper を実装してオーバーヘッドを最小限に抑える方法は?
1 MyProviderInfosに選択するインターフェイス/タイプはどれですか?
2プライベート静的列挙子を使用するのは合理的ですか? いいえ、
答えから
3 MyProviderInfosはプロパティである必要があり、そのメンバーを変更から保護する方法は? メンバーの内部/プライベートSETTERS(同じ回答から)
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();
}
}