Presentation laddar. Vänta.

Presentation laddar. Vänta.

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

Liknande presentationer


En presentation över ämnet: "Programmering i C# 1. En infrastruktur för programutveckling."— Presentationens avskrift:

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

2 Kapitel 1 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

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

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

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

6 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…

7 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

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

9 Kapitel 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

10 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

11 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

12 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

13 Kapitel 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

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

15 Kapitel 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

16 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

17 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

18 Kapitel 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


Ladda ner ppt "Programmering i C# 1. En infrastruktur för programutveckling."

Liknande presentationer


Google-annonser