我正在创建一个我定义的对象列表,如此
List<clock> cclocks = new List<clocks>();
对于列表中的每个对象,我正在调用方法moveTime,就像这样
foreach(clock c in cclocks)
{
c.moveTime();
}
是我可以写一些切肉刀的方式,所以我可以打电话
cclocks.moveTime();
然后它将通过列表执行该方法
我想我想创建一个收集方法?
我猜我必须要做一些事我只是不知道是什么。
感谢您的帮助
答案 0 :(得分:3)
我不太确定,但也许你在谈论ForEach()
List<T>
方法
cclocks.ForEach(c => c.MoveTime());
答案 1 :(得分:3)
您可以在List<T>
上编写一个扩展方法,该方法会迭代this
并在集合中的每个项目上调用moveTime()
。有关详细信息,请参阅this article。
但这种方法掩盖了很多信息。如果我是你,我会选择for-loop。如果你只是在每个对象上调用一个方法,你可以缩短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());
答案 2 :(得分:1)
您可以编写一个扩展方法来执行此操作。
答案 3 :(得分:0)
您可以从
创建继承的类List<clock>
或为List<clock>
答案 4 :(得分: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);