一千萬個為什麽

搜索

我是否可以使用具有通用列表的類並將其公開為默認值

我基本上想在代碼中執行此操作:

PersonList myPersonList;
//populate myPersonList here, not shown

Foreach (Person myPerson in myPersonList)
{
...
}

班級申報

public class PersonList
{
 public List myIntenalList;

 Person CustomFunction()
 {...}
}

那麽如何在我的類中公開“myInternalList”作為Foreach語句可以使用它的默認值?或者我可以嗎?原因是我有大約50個當前正在使用GenericCollection的類,我想轉向泛型,但不想重寫一噸。

最佳答案

You could make PersonList implement IEnumerable

public class PersonList : IEnumerable
{
    public List myIntenalList;

    public IEnumerator GetEnumerator()
    {
         return this.myInternalList.GetEnumerator();
    }

    Person CustomFunction()
    {...}
}

或者甚至更簡單,只需使PersonList擴展List:

public class PersonList : List
{
    Person CustomFunction() { ... }
}

The first method has the advantage of not exposing the methods of List, while the second is more convenient if you want that functionality. Also, you should make myInternalList private.

轉載註明原文: 我是否可以使用具有通用列表的類並將其公開為默認值