c# - VB6 到 C# : IUnknown

标签 c# properties vb6 vb6-migration iunknown

我在 VB6 中有一个属性,我正在尝试将其转换为 C#。如下:

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 是私有(private)变量,现在是 ArrayList 而不是以前的 Collection

m_coll 正在填充我自己的类对象之一。如您所见,该属性的类型为 IUnknown

我现在可能没有正确思考,但是 C# 中是否有与此类属性等效的属性?

最佳答案

如果您希望能够对一个类执行 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>

关于c# - VB6 到 C# : IUnknown,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15911434/

相关文章:

c# - 提供对超大 (50GB+) ASCII 文件的随机读取访问

vb6 - 如何调试 VB6 崩溃?

c# - 在 Compact Framework 中使用 DLL VB6

javascript - 为什么我无法添加到数字对象属性?

class - TEdit和TQuery

vb6 - 从 vb6 关闭外部应用程序

c# - 优化泛型方法逻辑

c# - ObservableCollection (ViewModel) 中的 MVVM ObservableCollection

c# - 如何用不同的数字替换每个字符串匹配项?

Qt:Q_PROPERTY 带有指针和用于 QtScript 访问的前向声明