2013-04-09 65 views
2

我有一個VB6屬性,我試圖轉換爲C#。這是因爲如下:VB6到C#:IUnknown

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正在填充我自己的類對象之一。如您所見,此屬性的類型爲IUnknown

在這一點上,我可能只是沒有正確思考,但是在C#中有這樣的屬性嗎?

+0

你在想的IEnumerable的?這允許您在集合上使用foreach語句。 – 2013-04-09 20:04:35

+7

你不應該使用'ArrayList'。改爲使用通用的'List '。 – Servy 2013-04-09 20:05:31

回答

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>

+1

你已經找到答案後回答,但我仍會告訴你;)謝謝! – 2013-04-09 20:52:14

+0

謝謝!對不起,我沒有更快:) – NDJ 2013-04-09 20:53:35