2

C# に変換しようとしている VB6 のプロパティがあります。それは次のとおりです。

Public Property Get NewEnum() As IUnknown
    'this property allows you to enumerate
    'this collection with the For...Each syntax
    Set NewEnum = m_coll.[_NewEnum]
End Property

m_collはプライベート変数ArrayListで、以前の の代わりに になりましたCollection

m_coll私自身のクラスオブジェクトの1つが取り込まれています。ご覧のとおり、このプロパティはIUnknown型です。

この時点では適切に考えていないだけかもしれませんが、C# でこの種のプロパティに相当するものはありますか?

4

1 に答える 1

2

クラスに対して foreach を実行できるようにしたい場合 (vb6 で NewEnum() を IUnknown として公開することでできるように)、クラスに IEnumerable を実装させることができます。

   public class MyClass : IEnumerable 
    {
        private List<string> items = new List<string>();

        public MyClass()
        {
            items.Add("first");
            items.Add("second");
        }


        public IEnumerator GetEnumerator()
        {
            return items.GetEnumerator();
        }
    }

これにより、次のように使用できます。

  MyClass myClass =new MyClass();
            foreach (var itm in myClass)
            {
                Console.WriteLine(itm);
            }

簡単にするために使用しましList<string>たが、使用できますList<yourCustomClass>

于 2013-04-09T20:30:13.297 に答える