Ok. Ostatnio Visual Studio rzuciło mi błędem "Cannot use ref or out parameter 'x' inside an anonymous method, lambda expression, or query expression". Nigdy wcześniej się z tym nie spotkałem, więc postanowiłem to zbadać.
Okazuje się, że wyrażenia lambda mają swój własny cykl życia zmiennych. Zmienne są trzymane w wyrażeniach lambda, nawet wtedy, kiedy ich zakres powinien się już skończyć i GC powinien je zgarnąć. Dlatego, gdybyśmy przekazali zmienną przez ref, moglibyśmy
Okazuje się, że wyrażenia lambda mają swój własny cykl życia zmiennych. Zmienne są trzymane w wyrażeniach lambda, nawet wtedy, kiedy ich zakres powinien się już skończyć i GC powinien je zgarnąć. Dlatego, gdybyśmy przekazali zmienną przez ref, moglibyśmy

Mam interfejs IModel i klasę Model, która implementuje IModel.
Tworzę sobie klasę:
publicclassDatawhereT : IModel
{ }
```Problem jest taki, że jak stworzę listę:```
varlist =newList ();```to niemożliwe jest wykonanie:```
list.Add(
newData());
```Rozwiązaniem mogłoby być stworzenie interfejsu:```
publicinterfaceIData<outT>whereT : IModel
{ }
```i lista wyglądałaby tak:```
varlist =newList>();```Wtedy list.Add zadziała poprawnie,