2015-03-26 2 views
1

У меня есть следующий:с пунктом # Обновления в списке

public class Item 
{ 
    public Item() 
    { 

    } 

    public string Name {get; set;} 
} 


public static class Extension 
{ 
    public static Item Modify(this Item itm) 
    { 
     itm.Name = "Changed"; 

     return itm; 
    } 
} 

, а затем в моем коде я экземпляр List<Item> и добавить 10 пунктов к нему.

List<Item> items = new List<Item>(); // contains 10 items 
..... 

Если теперь я хочу, чтобы перебирать свой список и для каждого элемента я вызываю метод расширения и изменить это имя свойства, как обновить элемент в списке items?

foreach (Item itm in items) 
{ 
    Item changedItem = itm.Modify(); 
    // update item in items list 
} 
+4

'Еогеасп (Пункт ITM в деталях) itm.Modify();' –

+2

ваши элементы в списке обновляются, когда и позвонить Изменить() в foreach – puko

+0

Вам не нужно ничего делать. Поскольку 'Item' является классом (ссылочным типом), он будет изменен в коллекции Items. –

ответ

1

Поскольку ваш метод возвращает тот же item, что он изменяет, ваш foreach цикл уже делает то, что вы хотите.

Вы можете создать новый список и переназначить items для несколько более короткий код:

items = items.Select(Modify).ToList(); 
Смежные вопросы