Referenični i vrijednosni tipovi

C# je tipski siguran jezik. Varijable su deklarirane tako da im je pridružen određeni tip podataka te je svakoj varijabli unaprijed određeno koje vrijednosti smije primati. Varijable mogu sadržavati reference i vrijednosne tipove, ili pak pokazivače na druge varijable. U ovom ćemo poglavlju govoriti o prvim dvama vrstama varijabli; a pokazivače ćemo obraditi u sljedećem poglavlju. Evo kratkog pregleda razlika između vrijednosnih tipova podataka i referenci: ako varijabla v sadrži vrijednosni tip, ona predstavlja objekt s nekom vrijednošću. Niti jedna druga varijabla ne sadrži isti objekt koji sadrži varijabla v (premda bilo koja varijabla može sadržavati istu vrijednost objekta) ako varijabla v sadrži referencu, koja predstavlja nešto što se odnosi na neki objekt, bilo koja varijabla može sadržavati referencu na isti objekt koji sadrži i varijabla v. Vrijednosni tipovi U C#-u je moguće definirati vlastite vrijednosne tipove podataka deklaracijom enumeracija (lekcija 7) ili struktura (lekcija 11). Kompilator korisnički definirane tipove podataka tretira na isti način kao i ugrađene tipove iako su optimizirani za potonje. Sljedeća tablica popisuje i daje informacije o predefiniranim vrijednosnim tipovima. U C#-u su naizgled osnovni tipovi podataka izgrađeni iz tipa 'object'. U tablici se također može uočiti koji sistemski tipovi u .NET Frameworku odgovaraju predefiniranim tipovima. C# tip podataka [tab].NET Framework sistemski tip podataka [tab]Signed?[tab]Bajtova[tab]Raspon vrijednosti sbyte System.Sbyte Da 1 -128 do 127 short System.Int16 Da 2 -32768 do 32767 int System.Int32 Da 4 -2147483648 do 2147483647 long System.64 Da 8 -9223372036854775808 do 9223372036854775807 byte System.Byte Ne 1 0 do 255 ushort System.Uint16 Ne 2 0 do 65535 uint System.Uint32 Ne 4 0 do 4294967295 ulong System.Uint64 Ne 8 0 do 18446744073709551615 float System.Single Da 4 Približno ±1.5x10-45 do ± 3.4x1038 sa 7 ili 8 znacajnih znamenki double System.Double Da 8 Približno ± 5.0x10-324 do ± 1.7x10 308 sa 15 ili 16 znacajnih znamenki decimal System.Decimal Da 12 Približno ± 1.0x10-28 do ±7.9x1028 sa 28 ili 29 znacajnih znamenki char System.Char N/A 2 Bilo koji Unicode znak (16 bitni) bool System.Boolean N/A 1/2 Istina ili Laž U sljedećem isječku koda deklarirane su i inicijalizirane dvije cjelobrojne varijable. int x = 10; int y = x; y = 20; //poslije ove naredbe x sadrži vrijednost 10, a y vrijednost 20 Referenični tipovi Predefinirani referenični tipovi su tipovi object i string, gdje je objekt ultimativna klasa za sve ostale tipove podataka. Nova referenca može se definirati upotrebom 'class', 'interface' i 'delegate' deklaracije (objašnjeno u tutorijalu 12). Referenični tipovi zapravo sadrže memorijsku adresu u kojoj je objekt na kojeg varijabla referencira. Uzmimo za primjer sljedeći isječak koda, gdje se dvjema varijablama referencira na isti objekt. object x = new object(); x.myValue = 10; object y = x; y.myValue = 20; // vrijednosti x.myValue i y.myValue sadrže vrijednost 20 Ovaj kod ilustrira kako se promjenom svojstva objekta korištenjem reference na taj objekt reflektira na ostale reference. Treba uočiti da iako su stringovi reference, ponašaju se kao vrijednosni tipovi. Kada je jednom stringu pridružena vrijednost drugog, na primjer: string s1 = "hello!"; string s2 = s1; Tada s1 referencira na isti objekt kako i string s1. S druge strane; kada promijenimo vrijednost varijable s1 sa: s1 = "goodbye"; Stvara se novi string objekt za varijablu s1. Nakon ove promjene, s1 sadrži "goodbye", a s2 je još uvijek jednako "hello!". Razlog tome je to što su string objekti nepromjenjivi. To znači da se svojstva tih objekata ne mogu promijeniti. Dakle, da bi na što referencira string varijabla, potrebno je stvoriti string objekt. Escape sekvence i verbatim stringovi Kada se deklarira string, određeni znakovi se ne mogu napisati na uobičajen način. C# podržava dva različita načina koji rješavaju taj problem: Prvi način je korištenjem escape sekvenci. Na primjer, pretpostavimo da želimo postaviti ovu vrijednost u varijablu: "Hello World How are you" Varijablu bismo mobli deklarirati sa sljedećom naredbom, koja sadrži escape sekvence te znak prijelaza u nove red: string a = ""Hello Worldn How are you""; Sljedeća tablica prikazuje listu escape sekvenci za znakove koji mogu biti zapisani na prikazani način: Znak Ecsape sekvenca ' ' " " Alert a Backspace b Form Feed f New Line n Carriage Return r Horizontal Tab t Vertical Tab v Unicode znak specificiran svojim brojem npr. u200 u Unicode znak specificiran svojom heksadecimalnom vrijednošću npr. xc8 x null o (zero) Drugi način je korištenjem 'verbatim' string literala. Verbatim stringovi se definiraju zatvaranjem određenog stringa unutar znakova @" i ". Kako bi ovu mogućnost ilustrirali, postavite varijablu 'putanja' na sljedeću vrijednost: E:Documents and SettingsZoran.MINOTAUR Mogli bismo koristiti backslash znakove: string putanja = "E:Documents and SettingsZoran.MINOTAUR" ili bismo mogli koristiti verbatim stringove: string putanja = @"E:Documents and SettingsZoran.MINOTAUR" Kod verbatim stringova se javlja vrlo korisna mogućnost. Stringovi zapisani pomoću verbatim string sintakse mogu biti u nekoliko linija, imati praznine i to bez mijenjanja izvornog sadržaja stringa. Znak za koji je potreban escaping je dvostruki navodnik, prikaz dvostrukog navodnixka je omogućen tek kad su dva dvostruka navodnika zajedno. Na primjer, pretpostavmo da želimo postaviti vrijednost varijable 'text' na sljedeću vrijednost: Riječ "velik" sadrži tri slova. Korištenjem verbatim string sintakse, naredba bi ivako izgledala: sting text = @"Riječ ""velik"" sadrži tri slova." Boxing C# vam omogućava da konvertirate bilo koji vrijednosni tip u odgovarajući referenični tip, i tada konvertirati 'boxed' tip. Sljedeći dio koda demonstrira boxing. Kada se druga linija izvršava, objekt je instanciran kao vrijednost 'box', i vrijednost koju sadrži i je kopirana preko tog objekta. Zanimljivo je primjetiti kako je tip podatka box vraćen kao vrijednosni tip; operator 'is' mijenja vrijednosni tip box-a u 'int'. int i = 123; object box = i; if (box is int) {Console.WriteLine("Box sadržava int");} // Ova linija se ispisuje

Western Europen time
 
Call of Duty 5
 
Iz neslužbenih izjava saznajemo kako bi se call of duty 5 mogao vratit u WWII
To su tek špekulacije, ali gdje ima dima ima i vatre.
Naslov će biti vrlo kreativan "World at war"(Svijet u ratu)
Novost je i to što nastavak određuje Treyarch , a ne stari,, pouzdani, dobri Infinity ward.
Ovaj put se bojište nalazi na Pacificu. Borba se odvija između Amerikanaca i Japanaca.
Prvi put u Call of Duty-u novo oružje- bacač plamena.
Držimo fige za WWII
Nova Fifa
 
Ovo je vjerojatno prvi put da pro evolution mora loviti fifu .
Naime ako neki čitatelji post-a neznaju fifa je u svojim trailerim-a pokazala evoluciju
u virtualnom nogometu.
Naime proevolution također ne zaostaje mnogo.
To će biti bitka godine(pretpostavljamo).
Nfs:UnderCover
 
EA je izdao novi nfs. Pod imenom UnderCover.
Navodno su u ovo izdanje uložili mnogo truda(što se nije vidjelo na carbonu).
Nfs se također napokon vraća na staze na kojima je najbolji(Ulice).
Linkovi
 
Mojn novi forum:
http://keli-master.net84.net
Odlični bologovi
myopinionabouteverything.blog.hr
teenworldlifemovie.blog.hr/
 
Today, there have been 4 visitors (4 hits) on this page!
Creative Commons License
Djelo Computers, čiji je autor Keli-master, ustupljeno je pod licencom Creative Commons Imenovanje-Nekomercijalno-Bez prerada 3.0 Hrvatska.
Bazirano na djelu koje se nalazi na keli-master.page.tl.
Dopuštenja koja prelaze okvire ove licence možda su dostupna na http://keli-master.page.tl. This website was created for free with Own-Free-Website.com. Would you also like to have your own website?
Sign up for free