0

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();
    }

}
4

1 に答える 1