Movatterモバイル変換


[0]ホーム

URL:


Idi na sadržaj
WikipediaSlobodna enciklopedija
Pretraga

C Sharp

S Wikipedije, slobodne enciklopedije
C♯
Programska Paradigmavišestruka:objektno-orijentiran, strukturiran, naredbeni, vođen događajima i zadacima, funkcionalan, generičan, reflektivan, konkurentan
Pojavio se2000;prije 26 godina (2000)
TvoracMicrosoft
Sistem tipovanjastatično, dinamičko,[1] (ostalo...)
Glavne implementacijeVisual C#,.NET Framework, Mono, DotGNU
DijalektiCω, Spec#, Polyphonic C#
UtjecaliC++,[2] Eiffel,Java,[2] Modula-3, Object Pascal,[3] ML, Icon, Haskell, Cω, F#[a]
Utjecao naD, Dart,[4] F#,Java,[5] Kotlin, Monkey, Nemerle, Swift,[6] Vala

C#[b][c] je programski jezik višestruke paradigme koji usvaja strogo tipovanje, imperativne, deklarativne, funkcionalne, generične,objektno-orijentirane (ima klase) i komponentno-orijentirane programske discipline. Razvio ga jeMicrosoft unutar.NET inicijative, a kasnije su ga za standard odobriliEcma (ECMA-334) iISO (ISO/IEC 23270:2006). C# je jedan od programskih jezika dizajniran zaCLI.

C# namjerava biti jednostavan, moderan, objektno-orijentirani programski jezik opće namjene.[7] Njegov razvojni tim predvodiAnders Hejlsberg. Najnovija verzija je C# 5.0, koja je izdata 15. augusta 2012.

Ciljevi dizajna

[uredi |uredi izvor]

Spisak ECMA standarda ima sljedeće ciljeve za C#:[7]

  • C# teži biti jednostavan, moderan,objektno-orijentirani programski jezik opće namjene.
  • Jezik, kao i njegove implementacije, trebaju omogućiti podršku za softverske inženjerske principe kao što su provjera strogog tipovanja, provjera granica nizova, provjera pokušaja korištenja nepozvanih varijabli, kao i automatsko upravljanje memorijom (tzv. garbage kolekcija). Softverska robusnost, trajnost i programerska produktivnost su važni.
  • Jezik teži da se koristi u razvoju softverskih komponenti adekvatnih za razvoj u distribuiranim okolnostima.
  • Portabilnost izvornog koda je veoma važna, kao i portabilnost programera, posebno za one programere koji su upoznati saC iC++ programskim jezicima.
  • Podrška za internacionalizaciju je veoma važna.
  • C# teži biti podesan za pisanje aplikacija za hostovane i embedded sisteme, u opsegu od veoma velikih koji koriste sofisticirane operativne sisteme, do veoma malih koji imaju posvećene funkcije.
  • Iako C# aplikacije teže biti ekonomične u vezi sa zahtjevima memorije i procesorske moći, jezik ne teži direktno da se takmiči u performansama i veličini sa programskim jezikom C iliasemblerom.

Historija

[uredi |uredi izvor]

Tokom razvoja.NET Frameworka, klasne biblioteke su originalno pisane korištenjem sistema kompajlera upravljanog koda zvanog Simple Managed C (SMC).[8][9] U januaru 1999,Anders Hejlsberg je formirao tim za razvoj novog jezika svojevremeno zvanog Cool, koji je bio skraćenica za "C-like Object Oriented Language" (bosanski:Objektno-orijentirani jezik nalik na C).[10] Microsoft je uzeo u obzir da zadrži "Cool" kao krajnje ime jezika, ali ga nije odabrao iz pravnih razloga. Vremenom .NET projekt je javno objavljen u julu 2000. na stručnoj razvojnoj konferenciji, promijenio ime u C#, a klasne biblioteke su, kao i ASP.NET runtime, ubačene u C#.

Oštro C, muzička nota

"C♯" (C oštri) je inspirisan muzičkom notacijom gdjeoštro indicira da napisana nota treba napravitipolutonvišeg tona.[11] Ovo je slično imenu jezikaC++, gdje "++" pokazuje davarijabla treba biti povećana za 1; oštri simbol također liči na ligaturu četiri "+" simbola (mreža dva sa dva), dalje pokazujući da je jezik inkrement jezika C++.[12]

Zbog tehničkih ograničenjaekrana (standardnifontovi,preglednici, itd.) i činjenice da oštri simbol (C♯) nije prisutan na standardnimtastaturama,brojni znak (C#) je odabran da predstavlja oštri simbol u pisanom imenu programskog jezika.[13] Ova konvencija je opisana u ECMA-334 C# jezičkoj specifikaciji.[7]

Verzije

[uredi |uredi izvor]
VerzijaSpecifikacijeDatum.NETVisual Studio
EcmaISO/IECMicrosoft
C# 1.0decembar 2002april 2003januar 2002januar 2002.NET Framework 1.0Visual Studio .NET 2002
C# 1.1
C# 1.2
oktobar 2003april 2003.NET Framework 1.1Visual Studio .NET 2003
C# 2.0[14]juni 2006septembar 2006septembar 2005[d]novembar 2005.NET Framework 2.0
.NET Framework 3.0
Visual Studio 2005
Visual Studio 2008
C# 3.0[15]Noneaugust 2007novembar 2007.NET Framework 2.0 (bez LINQ)[16]

.NET Framework 3.0 (bez LINQ)[16]
.NET Framework 3.5

Visual Studio 2008
C# 4.0[17]april 2010april 2010.NET Framework 4Visual Studio 2010
C# 5.0[18]decembar 2017decembar 2018juni 2013august 2012.NET Framework 4.5Visual Studio 2012
Visual Studio 2013
C# 6.0[19]NoneDraftjuli 2015.NET Framework 4.6
.NET Core 1.0
.NET Core 1.1
Visual Studio 2015
C# 7.0[20][21]Specification proposalArhivirano 13. 3. 2021. naWayback Machinemart 2017.NET Framework 4.7Visual Studio 2017 v15.0
C# 7.1[22]Specification proposalArhivirano 11. 3. 2021. naWayback Machineaugust 2017.NET Core 2.0Visual Studio 2017 v15.3[23]
C# 7.2[24]Specification proposalnovembar 2017Visual Studio 2017 v15.5[25]
C# 7.3[26]Specification proposalArhivirano 7. 3. 2021. naWayback Machinemaj 2018.NET Core 2.1
.NET Core 2.2
.NET Framework 4.8
Visual Studio 2017 v15.7[25]
C# 8.0[27]Specification proposalArhivirano 7. 3. 2021. naWayback Machineseptembar 2019.NET Core 3.0
.NET Core 3.1
Visual Studio 2019 v16.3[28]
C# 9.0[29]Specification proposalseptembar 2020.NET 5.0Visual Studio 2019 v16.8[28]
Sažetak verzija
C# 2.0C# 3.0C# 4.0C# 5.0[30]Buduće
Dodate
mogućnosti
  • Generics[31]
  • Djelomični tipovi[31]
  • Anonimne metode[31]
  • Iteratori[31]
  • Nulabilni tipovi[31]
  • Getter/setter odvojena pristupačnost[31]
  • konverzije grupa metoda (delegati)[31]
  • Ko- i kontra-varijanse za delegate[31]
  • Statične klase[31]
  • Implicitno tipizirane lokalne varijable[32]
  • Inicijalizatori objekata i kolekcije[32]
  • Automatski implementirana svojstva[32]
  • Anonimni tipovi[32]
  • Metode ekstenzija[32]
  • Upitni izrazi[32]
  • Lambda funkcije[32]
  • Ekspresivna grananja[32]
  • Parcijalne metode[33]
  • Dinamičko bindiranje[34]
  • Nazvani i opcionalni argumenti[34]
  • Generičke ko- i kontra-varijanse[34]
  • Prošireni interoperabilni tipovi ("NoPIA")[34]
  • Asinhrone metode[35]
  • Pozivni info atributi[35]
C# 6.0 planirano/urađeno
  • Kompajler-kao-servis (Roslyn)
  • Unos statičkog tipa članova u imenski prostor[36]
  • Filteri izuzetaka[36]
  • Čekanje u "uhvati"/finalnim blokovima[36]
  • Automatski svojstveni inicijalizatori[36]
  • Zadate vrijednosti za samo getter svojstva[36]
  • Članovi koji su utjelovljeni ekspresijom[36]
  • Null propagator (Succinct null provjera)[36]
  • String interpolacija[36]
  • nameof operator[36]
  • Besparametarski strukturni konstruktori[36]
  • Rječnički inicijalizator[36]
C# 7.0 prijedlozi
  • Iskazi deklaracija[37]
  • Parametarski nizovi za IEnumerable interfejse[37]

Sintaksa

[uredi |uredi izvor]

Sržna sintaksa C# jezika je slična jezicima iz C porodice kao što su C, C++ i Java. U biti:

  • Tačka-zarez se koristi da se opiše kraj tvrdnje.
  • Zaobljene zagrade se koriste da grupiraju tvrdnje. Tvrdnje su obično grupirane u metode (funkcije), metode u klase/razrede, a klase u imenski prostor (namespaces).
  • Varijable su pridružene korištenjem znaka jednakosti, ali u usporedbi korištenjem dva uzastopna znaka jednakosti.
  • Oštre zagrade se koriste sa nizovima, da bi ih deklarisale i da bi se uzela vrijednost datog indeksa od jednoj od njih.

Odlike

[uredi |uredi izvor]

Portabilnost

[uredi |uredi izvor]

Prema dizajnu, C# je programski jezik koji najdirektnije reflektira temeljnu CLI infrastrukturu.[38] Većini njegove suštinske vrste odgovaraju vrijednosni tipovi koje sprovodi CLI okvir (framework). Ipak, jezičke specifikacije ne navode zahtjeve generacije koda datog kompajlera: što znači da se ne navodi da C#kompajler mora ciljati Common Language Runtime, ili generisatiCommon Intermediate Language (CIL), ili generisati drugi specifični format. Teoretski, C# kompajler može generisatimašinski kod kao tradicionalni kompajleri za C++ iliFortran.

Tipovanje

[uredi |uredi izvor]

C# podržava strogo pisane implicitne varijabilne deklaracije pomoću kodavar, te implicitno zadatih nizova sa kodomnew[] koje prate inicijalizatori kolekcije.

C# podržava striktni tip podatka boolean:bool. Tvrdnje koje uzimaju uvjete, kao što jewhile iif, zahtijevaju iskaz tipa koji usvajatrue (istiniti) operator, kao što je tip Boolean. Dok C++ također ima tip Boolean, on može biti slobodno pretvoreno u i od integera (cjelobrojna vrijednost), te iskazi kao što jeif(a) zahtijevaju samo da jea pretvorljiv u bool, dopuštajućia da bude int, ili pointer. C# onemogućava ovom pristupu "cjelobrojnog značenja istine ili neistine", na temeljima koji forsiraju programere da koriste iskaze koji vraćaju upravobool mogu se spriječiti određeni tipovi programskih grešaka uobičajenih u C-u ili C++-u kao npr.if (a = b) (korištenje zadatka= umjesto jednakosti==).

C# je sigurniji po tipovanju nego C++. Jedine implicitne pretvorbe koje su zadate su one koje se smatraju sigurnim, kao što je proširivanje cijelih brojeva. Ovo se provodi pri vremenu kompajliranja, tokomJIT-a, i, u nekim slučajevima, pri pokretanju. Implicitne konverzije se ne dešavaju između Booleanova i integera, niti između enumeracijskih članova i integera (osim za literarnu 0, što se može implicitno pretvoriti u bilo koji enumerirani tip). Bilo koja konverzija koju je korisnik definisao mora biti eksplicitno označena kao eksplicitna ili implicitna, za razliku od C++copy constructora i operatora konverzije, koji su oba implicitni prema zadatim vrijednostima.

C# ima eksplicitnu podršku zakovarijansu i kontravarijansu u generičkim tipovima, za razliku od C++-a koji ima određen stepen podrške za kovarijansu jednostavno zbog semantike tipova koji se vraćaju na virtualne metode.

Enumeracijski članovi su postavljeni u njihov vlastitiobujam.

Jezik C# ne dopušta globalne varijable ili funkcije. Sve metode i članovi moraju biti deklarisani unutar klasa (razreda). Statički članovi javnih klasa mogu se zamijeniti za globalne varijable i funkcije.

Lokalne varijable ne mogu zasjeniti varijable priloženi blok, za razliku od jezika C i C++.

Meta programiranje

[uredi |uredi izvor]

Meta programiranje preko C# atributa dijelom je jezika. Većina ovih atributa dupliciraju funkcionalnsot GCCova i preprocesorskih direktiva zavisnih o platformi Visual C++a.

Metode i funkcije

[uredi |uredi izvor]

Kao C++, a za razliku od Jave, C# programer moraju koristiti kodvirtual za dopuštanje metodama da budu nadjačane podklasama.

Metode proširenja u C# dopuštaju programerima da koriste statičke metode kao da su one metode sa tabele klasne metode, što dopušta programerima da dodaju metode objektu za koji osjećaju da treba postojati na tom objektu i njegovim derivatima.

Tipdynamic dopušta metodu vezivanja runtimea, što dopušta pozivanje metoda slično kao u JavaScriptu i objektnu kompoziciju runtimea.

C# ima podršku za strogo tipovane funkcijske pointere preko kodadelegate. Kao što Qt framework ima pseudo-C++ komandesignal islot, C# ima semantiku specifičnu okružnim stilskim događajima "publish-subscribe", mada C# za to koristi delegate.

C# nudi kao Javasynchronized pozivanje metoda, preko atributa[MethodImpl(MethodImplOptions.Synchronized)], i ima podršku zauzajamno isključive "katance" preko kodalock.

Svojstva

[uredi |uredi izvor]

C# nudisvojstva kaosintaktički šećer za opći obrazac u kojem par metoda,pristupnik (getter) i mutator (setter) kapsuliraju operacije na jednom samomatributu unutar klase. Nema viška potpisa metoda za implementacije Getter/Setter koje trebaju biti napisane, a svojstvu se može pristupiti pomoću atributa sintakse umjesto više opširnog poziva metoda.

Namespace

[uredi |uredi izvor]

C# kodnamespace omogućava isti nivo kodne izolacije kao Javinpackage i kod C++-a

namespace

, sa veoma sličnim pravilima i mogućnostima zapackage.

Pristupanje memoriji

[uredi |uredi izvor]

U C#, pokazivači memorijske adrese mogu biti korišteni samo unutar blokova specifično označenih kaonesigurni, a programi sa nesigurnim kodom trebaju adekvatne dozvole za pokretanje. Većina pristupa objektima urađena je kroz sigurne objektne reference, koje uvijek bilo pokazuju na "žive" objekte ili imaju dobro definisanenull vrijednost; nemoguće je dobiti referencu od "mrtvog" objekta (onaj koji je prikupljen od gapbage kolekcije), ili od slučajno odabranog bloka memorije. Nesigurni pokazivač može pokazati na instancu vrijednosnog tipa, niza, stringa, ili bloka memorije dodijeljenog na stack. Kod koji nije markiran nesigurnim može i dalje pohranjivati i manipulisati pokazivače kroz kodniSystem.IntPtr tip, ali ih ne može dereferencirati.

Upravljana memorija ne može biti izričito oslobođena; umjesto toga, automatski je prikupljena u garbage kolekciji. Garbage kolekcija adresira problemcurenja memorije oslobađanjem programera od odgovornosti za oslobađanje memorije koja više nije potrebna.

Izuzeci

[uredi |uredi izvor]

Provjereni izuzeci nisu prisutni u C# (za razliku od Jave). Ovo je bila svjesna odluka bazirana na problemima skalabilnosti i verzionabilnosti.[39]

Polimorfizam

[uredi |uredi izvor]

Za razliku odC++,višestruko nasljeđivanje ne podržava C#, iako klasa može implementirati bilo koji broj interfejsa. Ovo je bila dizajnerska odluka od strane glavnog arhitekte jezika da se izbjegnu komplikacije i pojednostave arhitekturni zahtjevi kroz CLI. Kod implementiranja višestrukih interfejsa koji sadrže metodu sa istim potpisom, C# omogućava programeru implementiranje svake metode zavisno od toga koji interfejs ta metoda poziva, ili, kao Java, omogućava programeru implementaciju metode jednom i da ima jednostruko pozivanje po pozivu kroz bilo koji od interfejsa klase.

Ipak, C#, za razliku odJave, podržava preopterećenje operatora. Jedino najčešće preopterećeni operatori u C++ mogu biti preopterećeni u C#.

Funkcionalno programiranje

[uredi |uredi izvor]

Kroz primarno imperativni jezik, C# 2.0 je ponudio ograničenu podršku za funkcionalno programiranje krozfunkcije prve klase i zatvaranja u formi nepoznatih delegata. C# 3.0 proširena podrška za funkcionalno programiranje sa predstavljanjem lahkih sintaksi za lambda ekspresije, metode ekstenzija, ili sintaksa liste poimanja u obliku jezika "upita poimanja".

Zajednički tip sistema

[uredi |uredi izvor]

C# imaunificirani tip sistema. On se zoveCommon Type System (CTS).[40]

Unificirani tip sitema pokazuje da svi tipovi, uključujući primitive kao što su integeri, su podklase klase

System.Object

. Npr. svaki tip nasljeđuje

ToString()

metodu.

Kategorije tipova podataka

[uredi |uredi izvor]

CTS odvaja tipove podataka u dvije kategorije:[40]

  1. Referentni (reference types)
  2. Vrijednosni (value types)

Instance tipova value nemaju referentni identitet niti referentnu usporednu semantiku - poređenja jednakosti i nejednakosti za vrijednosne tipove porede stvarne tipove podataka sa instancama, sve dok se prateći operatori ne preopterete. Vrijednosni tipovi su izvedeni iz

System.ValueType

, uvijek imaju default vrijednost, a mogu uvijek biti kreirani i kopirani. Neka ostala ograničenja na vrijednosne tipove su ta da oni ne mogu biti izvedeni jedni iz drugih (ali mogu implementirati interfejse) i ne mogu imati izričit default (besparametarski) konstruktor. Primjeri vrijednosnih tipova su svi primitivni tipovi, kao

int

(potpisani 32-bitni cijeli broj),

float

(32-bitni IEEE floating-point broj),

char

(16-bitni Unicode kodna jedinica), te

System.DateTime

(identificira specifičnu tačku u vremenu sa preciznošću u nanosekundama). Ostali primjeri su

enum

(enumeracije) i

struct

(korisnički definisane strukture).U kontrastu, referentni tipovi imaju pojam referentnog identiteta - svaka instanca referentnog tipa je sama po sebi različita od svake druge instance, čak iako su podaci unutar obje instance jednaki. Ovo se reflektira u zadatim poređenjima jednakosti i nejednakosti za referentne tipove, što se ispituje za referentne radije nego strukturnu jednakost, sve dok se prateći operatori ne preopterete (kao što je slučaj za

System.String

). Generalno, nije uvijek moguće kreirati instancu referentnog tipa, niti kopirati postojeću instancu, ili obaviti vrijednosnu usporedbu na dvije postojeće instance, ipak specifični referentni tipovi mogu omogućiti takve servise izlaganjem javnog konstruktora ili implementiranjem pratećeg interfejsa (kao što su

ICloneable

i

IComparable

). Primjeri referentnih tipova su

object

(konačna bazna klasa za sve ostale C# klase),

System.String

(string od Unicode znakova), i

System.Array

(bazna klasa za sve C# nizove).

Obje kategorije tipova su proširive sa korisnički definiranim tipovima.

Boxing i unboxing

[uredi |uredi izvor]

Primjer:

intfoo=42;// vrijednosni tipobjectbar=foo;// foo je boxiran u barintfoo2=(int)bar;// deboxiran u vrijednosni tip

Biblioteke

[uredi |uredi izvor]

Pojedinosti C# navode minimalni skup biblioteka klasa i tipova za koje se očekuje da ih kompajler ima dostupne. U praksi, C# je najčešće korišten sa nekim implementacijama izCommon Language Infrastructure (CLI), što je standardizirano kao ECMA-335Common Language Infrastructure (CLI).

Primjeri

[uredi |uredi izvor]

Slijedi veoma jednostavan C# program, verzija klasičnog "Hello world" primjera:

usingSystem;classProgram{staticvoidMain(){Console.WriteLine("Selam, svijete!");}}

Efekt je da se piše ispisuje tekst na izlazu konzole:

Selam, svijete!

Svaka linija ima svrhu:

usingSystem;

Linija koda iznad govori kompajleru da koristi klasuSystem kao prefiks za tipove korištene u izvornom kodu. U ovom slučaju, kada kompajler vidi korištenje kodaConsole kasnije u izvornom kodu, on pokušava naći tip zvaniConsole, prvo u trenutnoj montaži, koju prate sve referencirane montaže. U ovom slučaju kompajler ne uspijeva naći takav tip, pošto je ime tipa ustvariSystem.Console. Kompajler tada pokušava naći tip zvaniSystem.Console korištenjem kodnogSystem prefiksa iz tvrdnje

using

, i ovoga puta uspijeva. Tvrdnja

using

dopušta programeru da iskaže sve prefikse kandidata da koriste tokom kompajliranja umjesto korištenja uvijek punih imena tipova.

classProgram

Iznad se nalazidefinicija klase. Sve između pratećeg para zagrada opisuje

Program

.

staticvoidMain()

Ovo deklariše člana klase metode gdje program počinje pokretanje. .NET runtime poziva

Main

metodu. (Napomena:

Main

može također biti pozvana svejedno odakle, kao iz neke druge metode, npr. iz druge metode

Program

.)

static
riječ

pravi metodu dostupnu bez instance

Program

. Svaka konzolne aplikacije metoda

Main

ulazna tačka mora biti deklarisana

static

(statičnom). U suprotnom, program bi zahtijevao instancu, ali bilo koja instanca zahtijeva program. Da se zaobiđe ta nerješivakružna zavisnost, C# kompajleri koji procesirajukonzolne aplikacije (kao ova iznad) pokazuje grešku, ako nema

staticMain

metode. Riječ

void

deklariše da

Main

nema vraćajuću vrijednost (return).

Console.WriteLine("Selam, svijete!");

Ova linija ispisuje izlaz.

Console

je statična klasa u

System

imenskom prostoru. Omogućava interfejs ka standardnom ulazu, izlaz, i tokove greške za konzolne aplikacije. Program poziva

Console

metodu

WriteLine

, koja prikazuje na konzoli liniju sa argumentom, string

"Selam, svijete!"

.

Grafički (GUI) primjer:

usingSystem.Windows.Forms;classProgram{staticvoidMain(){MessageBox.Show("Selam, svijete!");}}

Ovaj primjer je sličan prethodnom, osim što generišedijaloški okvir koji sadrži poruku "Selam, svijete!" umjesto pisanja istog u konzoli.

Standardizacija i licenciranje

[uredi |uredi izvor]

U augustu 2000, Microsoft, Hewlett-Packard iIntel kosponzorirale su podnošenje specifikacija za C# kao i za Common Language Infrastructure (CLI) organizaciji za standardizacijuEcma International.U decembru 2001, ECMA je izdala ECMA-334C# Language Specification. C# je postaoISO standard u 2003. godini (ISO/IEC 23270:2003 -Information technology — Programming languages — C#). ECMA je prethodno usvojila ekvivalentne specifikacije kao 2. izdanje za C#, u decembru 2002.

U junu 2005, ECMA je odobrila izdanje 3 za C# specifikacije, i nadograđenu ECMA-334. Dodaci uključuju parcijalne klase, anonimne metode, nulabilne tipove, igenerike (nešto slično C++šablonima).

U julu 2005, ECMA je priložila standarde i vezane TRove za ISO/IEC JTC 1 preko ovog drugog Fast-Track procesa. Ovaj proces obično uzima 6–9 mjeseci.

Definicija C# jezika iCLI su standardizirani podISO iEcma standardima koji pridaju zaštiturazložnog i nediskriminirajućeg licenciranja od tvrdnji patenta.

Microsoft se složio s tim da ne tuži razvojne programere otvorenog koda radi kršenja patenta u neprofitnim projektima za dio frameworka kojeg pokriva OSP.[41] Microsoft se je također složio da ne forsira patente vezane zaNovell proizvode protiv plaćajućih korisnika Novella[42] sa izuzetkom na listu proizvoda koje eksplicitno ne spominju C#, .NET ili Novellove implementacije .NET-a (The Mono Project).[43]

Implementacije

[uredi |uredi izvor]

Izvorni kompajler za C# jeMicrosoft Visual C#, koji je zatvorenog koda.

Microsoft vodi razvoj novog kompajleraotvorenog koda za C# i skup alata, prethodnog kodnog imena "Roslyn". Kompajler, koji je potpuno pisan uupravljanom kodu (C#), bio je otvoren i funkcionalno obrađen kao API. To omogućava razvojnim programerima kreiranje refaktoringa i dijagnostičke alate.

Ostali C# kompajleri postoje, često sadržavajući implementaciju CLI i .NET biblioteka klasa sve do .NET 2.0:

Također pogledajte

[uredi |uredi izvor]

Bilješke

[uredi |uredi izvor]
  1. Za async.
  2. Prema konvenciji, za drugi znak ovog programskog jezika u normalnom tekstu upotrebljava sebrojni znak (# – taraba ili rešetke); u umjetničkim reprezentacijama, ponekad se upotrebljava istinski znak zapovisilicu: C♯.
  3. Čita se ce šarpiliengleski:see sharp – "vidi oštro".
  4. The Microsoft C# 2.0 specification document only contains the new 2.0 features. For older features, use the 1.2 specification above.

Reference

[uredi |uredi izvor]
  1. Torgersen, Mads (27. 10. 2008)."New features in C# 4.0".Microsoft. Arhivirano soriginala, 3. 1. 2012. Pristupljeno 28. 10. 2008.
  2. 12Naugler, David (maj 2007). "C# 2.0 for C++ and Java programmer: conference workshop".Journal of Computing Sciences in Colleges.22 (5).Although C# has been strongly influenced by Java it has also been strongly influenced by C++ and is best viewed as a descendant of both C++ and Java.
  3. Hamilton, Naomi (1. 10. 2008)."The A-Z of Programming Languages: C#".Computerworld. Arhivirano soriginala, 24. 3. 2010. Pristupljeno 12. 2. 2010.We all stand on the shoulders of giants here and every language builds on what went before it so we owe a lot to C, C++, Java, Delphi, all of these other things that came before us. (Anders Hejlsberg)
  4. "Web Languages and VMs: Fast Code is Always in Fashion. (V8, Dart) - Google I/O 2013".Google. Pristupljeno 22. 12. 2013.
  5. Cornelius, Barry (1. 12. 2005)."Java 5 catches up with C#".University of Oxford Computing Services. Pristupljeno 18. 6. 2014.In my opinion, it is C# that has caused these radical changes to the Java language. (Barry Cornelius)
  6. Lattner, Chris (3. 6. 2014)."Chris Lattner's Homepage". Chris Lattner. Pristupljeno 3. 6. 2014.
  7. 123C# Language Specification(PDF) (4th izd.).Ecma International. juni 2006. Arhivirano soriginala(PDF), 2. 12. 2012. Pristupljeno 26. 1. 2012.
  8. Zander, Jason (24. 11. 2008)."Couple of Historical Facts". Pristupljeno 23. 2. 2009.
  9. Guthrie, Scott (28. 11. 2006)."What language was ASP.Net originally written in?". Arhivirano soriginala, 7. 7. 2011. Pristupljeno 21. 2. 2008.CS1 održavanje: nepreporučeni parametar (link)
  10. Hamilton, Naomi (1. 10. 2008)."The A-Z of Programming Languages: C#".Computerworld. Pristupljeno 1. 10. 2008.
  11. Kovacs, James (7. 9. 2007)."C#/.NET History Lesson". Arhivirano soriginala, 21. 8. 2011. Pristupljeno 18. 6. 2009.
  12. Hejlsberg, Anders (1. 10. 2008)."The A-Z of Programming Languages: C#".Computerworld. Arhivirano soriginala, 2. 4. 2015. Pristupljeno 15. 6. 2015.
  13. "Frequently Asked Questions About Visual C# .NET 2002".microsoft.com. Microsoft. Arhivirano soriginala, 14. 6. 2004. Pristupljeno 4. 7. 2015.
  14. "What's new in the C# 2.0 Language and Compiler".Microsoft Developer Network (archive.org). Microsoft. Arhivirano s originala 18. 12. 2010. Pristupljeno 11. 6. 2014.CS1 održavanje: bot: nepoznat status originalnog URL-a (link)
  15. Hejlsberg, Anders; Torgersen, Mads."Overview of C# 3.0".Microsoft Developer Network. Microsoft. Pristupljeno 11. 6. 2014.
  16. 12"Using C# 3.0 from .NET 2.0". Danielmoth.com. 13. 5. 2007. Arhivirano soriginala, 29. 9. 2012. Pristupljeno 4. 10. 2012.
  17. Hejlsberg, Anders."Future directions for C# and Visual Basic".C# lead architect. Microsoft. Arhivirano soriginala, 23. 9. 2011. Pristupljeno 21. 9. 2011.
  18. "An Introduction to New Features in C# 5.0".MSDN Blogs. Microsoft. Arhivirano soriginala, 4. 6. 2014. Pristupljeno 11. 6. 2014.
  19. "Language feature implementation status".github. Microsoft. Arhivirano soriginala, 12. 1. 2016. Pristupljeno 13. 2. 2015.
  20. "What's new in C# 7".Microsoft Docs. 21. 12. 2016.
  21. "New Features in C# 7.0"..NET Blog. Pristupljeno 9. 6. 2017.
  22. "What's new in C# 7.1".Microsoft Docs. Pristupljeno 9. 10. 2017.
  23. "Visual Studio 2017 15.3 Release Notes".docs.microsoft.com.
  24. "What's new in C# 7.2".Microsoft Docs. Pristupljeno 26. 11. 2017.
  25. 12"Visual Studio 2017 15.9 Release Notes".docs.microsoft.com.
  26. "What's new in C# 7.3".Microsoft Docs. Pristupljeno 23. 6. 2018.
  27. "What's new in C# 8.0".Microsoft Docs.
  28. 12"Visual Studio 2019 16.8 Release Notes".docs.microsoft.com.
  29. BillWagner."What's new in C# 9.0 - C# Guide".docs.microsoft.com (jezik: engleski). Pristupljeno 15. 10. 2020.
  30. Hejlsberg, Anders."Future directions for C# and Visual Basic".C# lead architect. Channel 9. Arhivirano soriginala, 23. 9. 2011. Pristupljeno 21. 9. 2011.
  31. 123456789"What's new in the C# 2.0 Language and Compiler".Microsoft Developer Network. Microsoft. Pristupljeno 11. 6. 2014.
  32. 12345678Hejlsberg, Anders; Torgersen, Mads."Overview of C# 3.0".Microsoft Developer Network. MIcrosoft. Pristupljeno 11. 6. 2014.
  33. Ghosh, Wriju."C# 3.0 : Partial Methods".MSDN Blogs. Microsoft. Pristupljeno 11. 6. 2014.
  34. 1234Burrows, Chris."C# 4.0 - New C# Features in the .NET Framework 4".Microsoft Developer Network. Microsoft. Pristupljeno 11. 6. 2014.
  35. 12"An Introduction to New Features in C# 5.0".MSDN Blogs. Microsoft. Pristupljeno 11. 6. 2014.
  36. 1234567891011"Language feature implementation status".github. Microsoft. Pristupljeno 13. 2. 2015.
  37. 12"Area-Language Design".github. Microsoft. Pristupljeno 13. 2. 2015.
  38. Visual Studio 2010 and .NET 4 Six-in-One. Wrox Press. 2010.ISBN 0470499486.
  39. Venners, Bill; Eckel, Bruce (18. 8. 2003)."The Trouble with Checked Exceptions". Pristupljeno 30. 3. 2010.
  40. 12Archer, Tom (2001). "Part 2, Chapter 4: The Type System".Inside C#. Redmond, Washington: Microsoft Press.ISBN 0-7356-1288-9.
  41. "Patent Pledge for Open Source Developers".
  42. "Patent Cooperation Agreement - Microsoft & Novell Interoperability Collaboration".Microsoft. 2. 11. 2006. Pristupljeno 5. 7. 2009.Microsoft, on behalf of itself and its Subsidiaries (collectively "Microsoft"), hereby covenants not to sue Novell's Customers and Novell's Subsidiaries' Customers for infringement under Covered Patents of Microsoft on account of such a Customer's use of specific copies of a Covered Product as distributed by Novell or its Subsidiaries (collectively "Novell") for which Novell has received Revenue (directly or indirectly) for such specific copies; provided the foregoing covenant is limited to use by such Customer (i) of such specific copies that are authorized by Novell in consideration for such Revenue, and (ii) within the scope authorized by Novell in consideration for such Revenue.
  43. "Definitions".Microsoft. 2. 11. 2006. Pristupljeno 5. 7. 2009.
  44. "Compatibility - Mono". Mono-project.com. 19. 12. 2011. Pristupljeno 4. 10. 2012.
Preuzeto iz "https://bs.wikipedia.org/w/index.php?title=C_Sharp&oldid=3806651"
Kategorije:
Sakrivene kategorije:

[8]ページ先頭

©2009-2026 Movatter.jp