Showing posts with label iterface. Show all posts
Showing posts with label iterface. Show all posts

Sunday, June 05, 2016

Šta su generici i kako se prave?


Pod pojmom generici u većini slučajeva se podrazumevaju sve klase koje sadrži imenski prostor System.Collection.Generic. Često se generičke klase, generičke liste ili uopšteno sve generičke kolekcije svrstavaju pod pojmom generici, ali za iskusnije programere kad kažete generici to se uglavnom misli na generičke klase, metode, strukture i sve što zahteva parametre. Znači češće se misli na nešto što ste vi sami isprogramirali da bude generičko dok pod pojmom generičke liste se misli na generičke liste koje već postoje u imenskom prostoru System.Collection.Generic. U prethodnom postu „Negeneričke kolekcije u C# programskom jeziku“ sam objasnio šta su negeneričke kolekcije, koje postoje u System.Collection imenskom prostoru i dao sam vam jednostavan primer kako da pravite vlastitu negeneričku klasu iako se takve retko prave. Takođe sam vam naveo da su generičke kolekcije za razliku od negenerički kolekcija; one kolekcije koje su parametorizovane; znači moraju imati određen tip podataka i svi elementi u kolekciji moraju biti istog tipa podataka.


( Generici u C# programskom jeziku )


Jednostavno, generičke kolekcije koriste se kad želite da svi elementi u kolekciji budu istog tipa podataka i zato su type safe. Izuzetno su korisni kada želite da izbegnete hard kodirane tipove i ne morate da pamtite koja vrsta podataka se koristi. Takođe nemate potrebe ni za eksplicitnom konverzijom. To se sve odnosi i na generike i na generičke liste i uopšteno na sve generičke kolekcije. Inače pod pojmom generici ću se isključivo baviti pravljenjem vlastitih generički kolekcija. Vi ćete u vašim programima često koristiti već napravljene generičke liste iz klasa .Net-a, ali će te takođe često dolaziti u situaciju da sami pravite svoje generike. Još samo jedna napomena. Ukoliko pravite igrice, korišćenje uopšteno svih kolekcija se smatra skupo, uzima više memorije i može usporiti igricu, pa u tom slučaju preporučujem da izbegavate kolekcije iako programerima olakšavaju posao. Inače u poslovnim aplikacijama, kolekcije se koriste konstantno ali generičke kolekcije. Kada pokrenete Microsoft Visual Studio, primetiće te da se imenski prostor System.Collection.Generic insertuje u vašim aplikacijama dok to nije slučaj sa imenskim prostorom System.Collection. To vam je takođe znak da treba da koristite generičke kolekcije ako već koristite kolekcije.

Generička klasa sa jednim parametrom