2010-04-27 68 views
0

我創造我所定義的對象列表,像這樣列表方法創建

List<clock> cclocks = new List<clocks>(); 

列表中的我打電話的方法moveTime每個對象,像這樣

foreach(clock c in cclocks) 
{ 
    c.moveTime(); 
} 

是一種方法,我可以寫一些菜刀的事情,所以我可以調用

cclocks.moveTime(); 

它將然後去好像列表中這樣做,方法

我想我想創建一個收集方法?

我猜我必須做點什麼我只是不知道該怎麼做。

感謝您的幫助

+0

我敢肯定有通過LINQ這樣做的方式。我不是LINQ專家(尚未),所以別人可以提出這個建議。儘管這只是對foreach方法的重述。如果你想爲你的收藏移動時間,你必須爲你的收藏創建一個移動時間。 – 2010-04-27 09:23:16

回答

3

你可以寫上List<T>擴展方法它迭代this,並呼籲每個集合中的項目moveTime()。有關更多信息,請參閱this article

雖然這種方法遮蔽了大量信息。如果我是你,我會去for循環。如果你只是一個調用的方法對每個對象,可以縮短for循環,像這樣:

// no need to declare scope if you're just doing one operation on the collection 
foreach(var object in collection) object.method(); 

...或者使用LINQ:

collection.ForEach(object => object.method()); 
3

我不太清楚,但也許你正在談論ForEach()List<T>

cclocks.ForEach(c => c.MoveTime()); 
0

你可以創建一個類繼承

List<clock> 

或創建擴展方法List<clock>

0

另一種解決方法是從List<Clock>中派生出新類,然後添加所需的所有方法。事情是這樣的:

public class ClocksList : List<Clock> 
{ 
    public void MoveSingleClock(Clock clock) 
    { 
     clock.MoveTime(); 
    } 

    public void MoveAllClocks() 
    { 
     foreach(clock c in InnerList) 
     { 
     MoveSingleClock(c); 
     }  
    } 
} 

您可以使用新類這樣的:

ClocksList clocks = new ClocksList(); 

// Fill the list 
clocks.Add(new Clock()); 
... 
// Move time on all clocks 
clocks.MoveAllClocks(); 

// Move single clock 
Clock c = new Clock(); 
clocks.Add(c); 
clocks.MoveSingleClock(c);