Cela fonctionnera, mais seulement si votre type (qui contient .dirty
) est une classe.
S'il s'agit d'un struct, vous ne pourrez pas le modifier de cette façon. Dans le cas d'un struct, vous devrez remplacer l'ensemble du struct dans la collection, ce qui est très difficile avec les extensions LINQ, car elles sont conçues pour les requêtes et non pour les modifications.
Si le type (de storage
) met en œuvre IList<T>
comme List<YourClass>
vous pourriez utiliser :
int index = storage.FindIndex(item => item.dirty);
var item = storage[index];
item.dirty = false;
storage[index] = item;
Notez que c'est désordonné, mais surtout parce qu'il faut réinitialiser complètement la valeur de la structure dans la liste.
C'est en partie pourquoi les structures mutables sont une mauvaise idée. Si vous trouvez que c'est un modèle dont vous pensez avoir besoin avec votre type, vous pouvez envisager une classe. En général, tout élément qui va avoir un drapeau "dirty" est probablement mutable, et en tant que tel, devrait être une classe et non une structure.