U nekoliko prethodnih postova sam pisao o novinama koje dolaze izlaskom C# 3.0. Jedna od novina koje su pobudile veliko interesovanje programera je novi tip var . Opis novog tipa ću pokušati objasniti na primjerima i specifičnostima njegove upotrebe.
Npr. imamo sljedeći kod:
var intVNumber = 23; var strVRijec = "Vozdra Svijete";
Ovo znači da tip var neka vrsta zajedničkog tipa, koji može sadržavati bilo koji type. Ovo može zvučati kao izmišljanje tople vode, jer sve to može raditi i object tip.
Npr:
object objNumber = 23; object objRijec = "Vozdra Svijete";
Međutim pogledajmo sljedeći dio koda:
intVNumber ++; //Kompajler ne prijavljuje nikakvu grešku jer je var uistinu tipa intint objNumber++; //error CS0023: Operator '++' cannot be applied to operand of type 'object'
Ovo znači da nema govora o tome kako object može zamjeniti ovu riječ. Da bi se uvjerili u to pokušajmo kompajlirati sljedeći dio koda:
int VNumber = objNumber; //error CS0266: Cannot implicitly convert type 'object' to 'int'. An explicit conversion exists (are you missing a cast?)
Ali ovaj dio koda će se kompajlirati:
int VNumber = (int)objNumber;
Još jedna krucijalna stvar koja var tip razlikuje od tip object je nrp kada pokušamo kompajlirati sljedeći dio koda:
int VNumber=strVRiječ; // error CS0029: Cannot implicitly convert type 'string' to 'int'
Ovo znači da var u svojoj deklaraciji poprima jedan od tipova, koji se više ne može dinamički mijenjati tokom životnog vijeka ove varijable. Za razliku od var, object može poprimati različite tipove.
objNumber = objRijec;//Kompajler ne prijavljuje grešku
Pogledajmo sljedeći dio koda:
var objVarijabla=objNumber; //objVarijable je tipa object
Sada možemo pisati:
objVarijabla = "Vozdra Svijete"; objVarijabla = 123.456;objVarijabla = 's';
U ovom slučaju var objVarijabla inicijalizirana je sa varijablom tipa object, što znači da objVarijabla sada ima sve osobine tipa object.
Osobine var tipa
Nekoliko limitirajući osobina ovaj tip čini specifičnim:
Kada deklarišemo var tip tada mora postojati i inicijalizacija istog npr:var xvarijabla; // Greška, ne postoji inicijalizacija koja bi ukazivala na određeni tip
var xKolekcija = {1, 2, 3}; // Greška, inicijalizacija kolekcije nije dozvoljena var xNull = null; // Greška, null tip nije dozvoljen
var
tip deklariše se samo kao lokalna varijabla, te ne može biti prosljeđena preko funkcije u bilo kojem obliku
public int Increment(var intNumber){return intNumber +=23;}
Kompajler će prijaviti grešku: error CS0825: The contextual keyword ‘var’ may only appear within a local variable declaration
Kao i u prethodnim zaključcima novine u C# 3.0 vežu se za LINQ Language integrated query, pa tako i tip var.
Pingback: LINQ – .NET Language Integrated Query III Dio « Bahrudin Hrnjica Web Page
Pingback: LINQ – .NET Language Integrated Query I Dio « Bahrudin Hrnjica Blog
Pingback: LINQ – .NET Language Integrated Query II Dio « Bahrudin Hrnjica Blog