IList vs IEnumerable subjektų kolekcijoms

Kai mano domene yra dalykų sąrašų, ar jie turėtų būti rodomi kaip ILists arba IEnumerables? Pavyzdžiui. Užsakyme yra „OrderLines“ krūva.

135
18 дек. pondermatic nustatė 18 dec. 2008-12-18 05:17 '08 at 17:17 pm 2008-12-18 05:17
@ 2 atsakymai

IEnumerable<T> yra serija elementų, kuriuos galite kartoti per (pvz., Naudojant foreach), o IList<T> yra kolekcija, kurią galite pridėti arba pašalinti.

Paprastai norite, kad būtų galima pakeisti užsakymą pridedant arba pašalindamas „OrderLines“, taigi tikriausiai norite, kad užsakymas būtų linija IList IList<OrderLine> .

Tai pasakius, turite priimti kai kuriuos sprendimus dėl sistemos. Pavyzdžiui, ar galima įdėti vieną OrderLine pavyzdį į du skirtingus užsakymus? Galbūt ne. Todėl, atsižvelgiant į tai, kad norite patikrinti, ar Užsakymo užsakymas turėtų būti pridėtas prie užsakymo, galite iš tikrųjų įdėti „Lines“ nuosavybę iš karto, kai „ IEnumerable<OrderLine> ir pateikti „Add (OrderLine)“ ir „Remove“ (OrderLine) metodus, kurie gali apdoroti šį patikrinimą.

176
18 дек. Atsakyti Matt Hamilton 18 Dec. 2008-12-18 05:27 '08 at 5:27 am 2008-12-18 05:27

Daugeliu atvejų aš galiu dirbti su „IList“ sistemoje „IEnumerable“, nes „IEnumerable“ neturi skaičiavimo metodo ir negalite prieiti prie kolekcijos per indeksą (nors, jei naudojate LINQ, galite tai padaryti naudodami plėtinių metodus).

22
14 сент. Atsakymą pateikė JoshSchlesinger 14 rugsėjis. 2009-09-14 07:19 '09, 7:19, 2009-09-14 07:19

Kiti klausimai apie etiketes arba Ask a question