Programmering i C# - PowerPoint PPT Presentation

programmering i c n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Programmering i C# PowerPoint Presentation
Download Presentation
Programmering i C#

play fullscreen
1 / 18
Programmering i C#
173 Views
Download Presentation
peggy
Download Presentation

Programmering i C#

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. Programmering i C# 1. En infrastruktur för programutveckling

  2. Ursprung • Utvecklingsgrupp hos Microsoft • Anders Hejlsberg • Generellt typsystem oberoende av språk • Kompilering till mellanformat • Självbeskrivande komponenter • Heltäckande klassbibliotek • Internetanpassat distribuerat system Kapitel 1

  3. ECMA-standard • Centrala delar i typsystem, mellanformat, exekveringsmiljö och klassbibliotek • Common Language Infrastructure • ECMA-334 • Språket C# • ECMA-335 Kapitel 1

  4. Hello World i C# namespace Studentlitteratur.CSharp { publicclass Minimal { privatestring message; public Minimal(string message) { this.message = message; } publicvoid DeliverMessage() { System.IO.Console.WriteLine(message); } Kapitel 1

  5. Hello World i C# forts. staticvoid Main() { Minimal obj = new Minimal(”Hello World!”); obj.DeliverMessage(); } } } Kapitel 1

  6. Komponentorientering • Typsystemet rent objektorienterat • Ett steg till: komponentorienterat • Public-deklarerad klass blir komponent • Stark typkontroll • Skräpsamling • Prestanda • Sämre än C/C++ • Bättre än Java… Kapitel 1

  7. Common Language Infrastructure • Common Type System • Typkategorier och deras egenskaper • Common Language Specification • Obligatoriska och valfria språkmekanismer • Common Intermediate Language • Mellanformatskoden och metainformationen • Virtual Execution System • Exekveringsmiljön Kapitel 1

  8. Centrala begrepp • Utvecklarens API är klass-biblioteket • Kompilerat till CIL VB C++ C# Perl Python … Klassbiblioteket Typsystemet (CTS/CLS) Exekveringsmiljön (VES) Operativsystemet Kapitel 1

  9. 1.1 Typkategorier • Alla variabler är objekt • Har beteende och tillstånd • Alla typer finns i klassbiblioteket • Inga typer i språket • C# har ett antal synonymer till de vanligaste • Motsvarar traditionella inbyggda typer • Typerna har också CIL-namn Kapitel 1

  10. Tre kategorier • Klasser • Objekt hanteras med referensvariabel • ”referenstyper” • Structer • Objekt har variabelnamn som representerar objektets tillstånd (värde) • ”värdetyper” • Interface • Klass utan implementation Kapitel 1

  11. Särskilda C#-kategorier • Särskild syntax för tre andra kategorier: • Enum – uppräkningsbar typ (struct) • Delegate – metodreferens (klass) • Event – utökad delegate (metod) • Obs endast syntaxmässigt annorlunda Kapitel 1

  12. Exempel typkategorier MyClass obj; obj = new MyClass(); MyStruct var; int x = 5; // en struct av typen Int32 int y = 10; y = x; // y och x är olika variabler med samma värde string s1 = ”Ett”; string s2 = ”Två”; s1 = s2; // s1 och s2 refererar till samma sträng Kapitel 1

  13. 1.2 Klassbiblioteket • 294 standardiserade typer • Gemensam basklass heter Object (object) • Indelat i namnrymder, roten heter System • Indelat i underbibliotek, centrala heter BCL • Underbibliotek utgör profiler • BCL + Runtime Infrastructure = Kernel • Levereras i DLL-filer innehållande CIL Kapitel 1

  14. Undantag (exceptions) • Klass-biblioteket tillämpar undantag • Var beredd hantera undantag! try { DangerousCall(); … } catch (Exception e) { Console.WriteLine(”Oväntat fel…”); … } Kapitel 1

  15. 1.3 Mellanformatet • Kompilering ger fil innehållande CIL-kod samt metainformation: ett assembly • Metainformationen kallas manifest • En applikation består av en eller flera assemblies • Assembly kan delas i flera filer: moduler • En av dem innehåller då manifestet Kapitel 1

  16. Autentisering • Assemblies kan förses med krypterat hashvärde i manifestet • krypteras med private key • public key bifogas också manifestet • VES kan göra motsvarande hash, dekryptera manifestets hash och jämföra • Ger mycket säker verifiering av både innehåll och leverantör Kapitel 1

  17. JIT-kompilering • CIL-koden kompileras till maskinkod vid programstart • Full optimering för aktuell plattform • En instans kan vara en process eller en tråd (definieras inte i VES) • VES motsvarighet till process är AppDomain • Isolerar exekverande program Kapitel 1

  18. 1.4 Skräpsamling • Objekt som lämnas utan referenser vid exekvering raderas av VES skräpsamlare • Ingen motsats till new i C# • Algoritmen ospecificerad • Därmed okänt när objekt raderas • Destruktorer anropas vid ospecificerad tidpunkt någon gång mellan sista referensens försvinnande och programavslut Kapitel 1