Programski jezik C#: Programski jezik C#



Yüklə 445 b.
tarix17.10.2017
ölçüsü445 b.
#5525


Programski jezik C#:

  • Programski jezik C#:

  • Tipovi


using System;

  • using System;

  • class Test

  • {

  • static void Main( )

  • {

  • int x=26;

  • Console.WriteLine(x);

  • }

  • }



Konzolna aplikacija u Visual Studiu:

  • Konzolna aplikacija u Visual Studiu:

























Varijable ili konstante vrijednosnog tipa su naprosto vrijednosti.

  • Varijable ili konstante vrijednosnog tipa su naprosto vrijednosti.

  • Definicija strukture SPoint: Instanca strukture

  • SPoint u memoriji:





U memoriji imamo na kraju sljedeće:

  • U memoriji imamo na kraju sljedeće:



U C#-u tip int je isto što i System.Int32 koji je primjer strukture.

  • U C#-u tip int je isto što i System.Int32 koji je primjer strukture.

  • Na varijablama ugrađenih tipova možemo zvati i metode.

  • U sljedećem primjeru dohvatit ćemo dvije konstante iz strukture System.Int32 (pritom moramo koristiti ime tipa, System.Int 32 ili int) te ćemo pozvati jednu metodu.



Referentni tip je nešto složeniji od vrijednosnog tipa jer se uz objekt kreira i referenca na taj objekt. Varijabla ili konstanta referentnog tipa je zapravo referenca na objekt koji sadrži vrijednosti.

  • Referentni tip je nešto složeniji od vrijednosnog tipa jer se uz objekt kreira i referenca na taj objekt. Varijabla ili konstanta referentnog tipa je zapravo referenca na objekt koji sadrži vrijednosti.



CPoint p1=new CPoint ();

  • CPoint p1=new CPoint ();

  • p1.X=2;

  • CPoint p2=p1;

  • Console.WriteLine(p1.X); // 2

  • Console.WriteLine(p2.X); // 2

  • p1.X=5;

  • Console.WriteLine(p1.X); // 5

  • Console.WriteLine(p2.X); //5





Referenci se može dodijeliti literal null. U tom slučaju referenca ne pokazuje ni na jedan objekt.

  • Referenci se može dodijeliti literal null. U tom slučaju referenca ne pokazuje ni na jedan objekt.



C# pruža podršku i za direktno upravljanje memorijom pomoću pokazivača međutim blokovi koda u kojima se koriste pokazivači moraju biti označeni ključnom riječi unsafe (i kompilirani s /unsafe opcijom).

  • C# pruža podršku i za direktno upravljanje memorijom pomoću pokazivača međutim blokovi koda u kojima se koriste pokazivači moraju biti označeni ključnom riječi unsafe (i kompilirani s /unsafe opcijom).

  • Pokazivački tipovi se u pravilu koriste za inteoperabilnost s C-ovskim APIjima i hvatanje memorije izvan upravljane hrpe.



Stog (stack) je memorijski blok za pohranu varijabli (objekata kod vrijednosnih tipova, referenci za referentne objekte). Radi standardno na principu last-in first-out.

  • Stog (stack) je memorijski blok za pohranu varijabli (objekata kod vrijednosnih tipova, referenci za referentne objekte). Radi standardno na principu last-in first-out.

  • “Hrpa” (heap) je memorijski blok u koji se smještaju referentni objekti. Referenca na objekt smješta se na stog.

  • “Sakupljač otpada” (Garbage Collector - GC) periodički uklanja objekte s heap-a. Da bi se to dogodilo, objekt ne smije imati referencu na sebe.



Na heap se također smještaju i statičke varijable članice, kao i konstante (za njih nije zadužen GC).

  • Na heap se također smještaju i statičke varijable članice, kao i konstante (za njih nije zadužen GC).

  • Primjer: Ako unutar neke funkcije kreiramo lokalni objekt referentnog tipa, objekt se smješta na heap, a referenca na njega na stog. Pri izlasku iz funkcije referenca se briše sa stoga, objekt više nema referencu na sebe i GC ga može pokupiti.

  • Važno: ne možemo eksplicitno izbrisati objekte (kao u

  • C++-u).



Nije dozvoljeno deklarirati varijablu istog imena u istom ili ugniježdenom bloku:

  • Nije dozvoljeno deklarirati varijablu istog imena u istom ili ugniježdenom bloku:



Izvan unsafe konteksta nemoguće je pristupiti neinicijaliziranoj memoriji.

  • Izvan unsafe konteksta nemoguće je pristupiti neinicijaliziranoj memoriji.

  • Konkretno:

  • Lokalnim varijablama se mora dodijeliti vrijednost prije čitanja.

  • Argumentima funkcije se mora dodijeliti vrijednost prije poziva funkcije.

  • Automatski se inicijaliziraju elementi polja (polje je zapravo samo specijalan primjer klase).







Nakon ispravljanja koda, izlaz je sljedeći:

  • Nakon ispravljanja koda, izlaz je sljedeći:







System.Object je najviše rangirana temeljna klasa za sve tipove. Sadrži sljedeće članove:

  • System.Object je najviše rangirana temeljna klasa za sve tipove. Sadrži sljedeće članove:



Pakiranje (engl. boxing) nam omogućava da vrijednosni tip pretvorimo u referentni. Konkretno, vrijednost pakiramo u instancu klase object (koja je naravno referentni tip).

  • Pakiranje (engl. boxing) nam omogućava da vrijednosni tip pretvorimo u referentni. Konkretno, vrijednost pakiramo u instancu klase object (koja je naravno referentni tip).













Konstruktor ne sadrži inicijalizacijsku listu (kao u C++-u), već se inicijalizacija događa ili implicitno ili direktno pri deklaraciji.

  • Konstruktor ne sadrži inicijalizacijsku listu (kao u C++-u), već se inicijalizacija događa ili implicitno ili direktno pri deklaraciji.

















Ovaj operator provjerava izraze s +, -, *, /, ++, --, unarnim –.

  • Ovaj operator provjerava izraze s +, -, *, /, ++, --, unarnim –.

  • int a=1000000, b=1000000; int c;

  • ili









Enumeracija je vrijednosni tip koji grupira imenovane numeričke konstante.

  • Enumeracija je vrijednosni tip koji grupira imenovane numeričke konstante.



Svakom članu enumeracije je implicitno pridružena integralna vrijednost tipa int (konkretno radi se o vrijednostima 0,1,2,… u skladu s poretkom pri deklaraciji).

  • Svakom članu enumeracije je implicitno pridružena integralna vrijednost tipa int (konkretno radi se o vrijednostima 0,1,2,… u skladu s poretkom pri deklaraciji).

  • Pridruženi integralni tip i pripadne vrijednosti se mogu i promijeniti. Ukoliko eksplicitno promijenimo pridruženu vrijednost nekoj od konstanti, vrijednost sljedećih se uvećava za po jedan (ako nisu eksplicitno zadane).





Polja predstavljaju fiksan broj elemenata određenog tipa smještenih uzastopno u memoriji.

  • Polja predstavljaju fiksan broj elemenata određenog tipa smještenih uzastopno u memoriji.



Sva polja izvedena su iz System.Array (klasa System.Array je apstraktna, tj. ne može se instancirati).

  • Sva polja izvedena su iz System.Array (klasa System.Array je apstraktna, tj. ne može se instancirati).

  • Možemo deklarirati polje samoglasnici s

  • char[] samoglasnici;

  • Da bismo zauzeli mjesto na heap-u, moramo koristiti operator new

  • samoglasnici = new char[5];



Klasa System.Array definira uobičajene metode i svojstva za sva polja.

  • Klasa System.Array definira uobičajene metode i svojstva za sva polja.

  • Sadrži svojstva Length i Rank i statičke metode CreateInstance, GetValue, SetValue, Sort, Copy, IndexOf, LastIndexOf, Find, FindIndex, FindLastIndex, ...

  • Matrice također implementiraju sučelje IEnumerable, stoga je moguće koristiti foreach za iteriranje po elementima



Višedimenzionalna polja mogu biti:

  • Višedimenzionalna polja mogu biti:



Pravokutno polje može biti inicijalizirano na sljedeći način:

  • Pravokutno polje može biti inicijalizirano na sljedeći način:



Kod neravnomjernih polja inicijalizacija se vrši ovako:

  • Kod neravnomjernih polja inicijalizacija se vrši ovako:











Napomena:

  • Napomena:

  • Pri izvršavanju se provjeravaju sve granice polja. Ukoliko se pokuša dohvatiti indeks izvan granica, baca se IndexOutOfRangeException iznimka.

  • Provjeravanje se može izbjeći samo u unsafe kodu:





Tip Array ima fiksnu veličinu.

  • Tip Array ima fiksnu veličinu.

  • Ukoliko je potrebno dinamički povećavati broj objekata, koristi se klasa List (List) za koju nije potrebno prethodno definirati broj objekata koje će sadržavati.

  • Dodavanje objekata vrši se metodom Add.



Yüklə 445 b.

Dostları ilə paylaş:




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©genderi.org 2024
rəhbərliyinə müraciət

    Ana səhifə