Étant donné une classe:
class foo
{
public string a = "";
public int b = 0;
}
Puis une liste générique d'entre eux:
var list = new List<foo>(new []{new foo(), new foo()});
Si je dois attribuer plusieurs propriétés dans la List<T>
ForEach()
méthode suivante , y a-t-il un moyen plus simple de le faire ci-dessous? J'espère que je suis un peu épais.
// one property - easy peasy
list.ForEach(lambda => lambda.a="hello!");
// multiple properties - hmm
list.ForEach(lambda => new Action(delegate() { lambda.a = "hello!"; lambda.b = 99;}).Invoke());
Edit: Thought ForEach()
était une méthode d'extension LINQ, alors qu'elle fait en fait partie de List<T>
oops!
List<T>
et n'est pas LINQ. Aussi, vous pouvez créer votre liste avecvar list = new List<foo>() { new foo(), new foo() };
Réponses:
Tout ce que vous avez à faire est d'introduire des crochets pour que votre méthode anonyme puisse prendre en charge plusieurs lignes:
la source
La méthode anonyme est votre amie
MSDN:
la source
Devient
Bien sûr, vous pouvez également les attribuer lorsque vous créez la liste comme:
la source
la source
Honnêtement, il n'est vraiment pas nécessaire d'utiliser List.ForEach ici:
la source