Ladda ner presentationen
Presentation laddar. Vänta.
1
1. En infrastruktur för programutveckling
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 {
public class Minimal private string message; public Minimal(string message) this.message = message; } public void DeliverMessage() System.IO.Console.WriteLine(message); Kapitel 1
5
Hello World i C# forts. static void 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
Typsystemet (CTS/CLS) Exekveringsmiljön (VES)
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
C# och .NET 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 Structer Interface
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
Liknande presentationer
© 2024 SlidePlayer.se Inc.
All rights reserved.