Создание метода списка - PullRequest
0 голосов
/ 27 апреля 2010

Я создаю список моих определенных объектов примерно так

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

для каждого объекта в списке я вызываю метод moveTime, вот так

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

это способ, которым я могу написать кое-что умное, чтобы я мог позвонить

cclocks.moveTime();

тогда он пойдет по списку, использующему этот метод

Я думаю, я хочу создать метод коллекции?

Полагаю, что-то, что я могу сделать, просто не знаю, что.

спасибо за вашу помощь

Ответы [ 5 ]

3 голосов
/ 27 апреля 2010

Вы можете написать метод расширения для List<T>, который повторяет this и вызывает moveTime() для каждого из элементов в коллекции. См. эту статью для получения дополнительной информации.

Однако такой подход скрывает много информации. Если бы я был тобой, я бы пошел с петлей. И если вы просто вызываете один метод для каждого из объектов, вы можете сократить цикл 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 голосов
/ 27 апреля 2010

Я не совсем уверен, но, возможно, вы говорите о ForEach() методе List<T>

cclocks.ForEach(c => c.MoveTime());
1 голос
/ 27 апреля 2010

Вы можете написать метод расширения для этого.

http://msdn.microsoft.com/en-us/library/bb383977.aspx

0 голосов
/ 27 апреля 2010

Другое решение - извлечь новый класс из 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);
0 голосов
/ 27 апреля 2010

Вы можете создать класс, который наследует от

List<clock>

или создайте метод расширения для List<clock>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...