Upload
peggy
View
40
Download
0
Embed Size (px)
DESCRIPTION
Programmering i C#. 1. En infrastruktur för programutveckling. Ursprung. Utvecklingsgrupp hos Microsoft Anders Hejlsberg Generellt typsystem oberoende av språk Kompilering till mellanformat Självbeskrivande komponenter Heltäckande klassbibliotek Internetanpassat distribuerat system. - PowerPoint PPT Presentation
Citation preview
Programmering i C#
1. En infrastruktur för programutveckling
Kapitel 12
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 13
ECMA-standard
Centrala delar i typsystem, mellanformat, exekveringsmiljö och klassbibliotek Common Language Infrastructure ECMA-334
Språket C# ECMA-335
Kapitel 14
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 15
Hello World i C# forts.
static void Main(){
Minimal obj = new Minimal(”Hello World!”);
obj.DeliverMessage();}
} }
Kapitel 16
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 17
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 18
Centrala begrepp
Utvecklarens API är klass-biblioteket Kompilerat
till CIL
OperativsystemetOperativsystemet
Exekveringsmiljön (VES)Exekveringsmiljön (VES)
Typsystemet (CTS/CLS)Typsystemet (CTS/CLS)
KlassbiblioteketKlassbiblioteket
VB C++ C# Perl Python …
Kapitel 19
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 110
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 111
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 112
Exempel typkategorier
MyClass obj;obj = new MyClass();
MyStruct var;
int x = 5; // en struct av typen Int32int 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 113
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 114
Undantag (exceptions)
Klass-biblioteket tillämpar undantag
Var beredd hantera undantag!
try{
DangerousCall();…
}catch (Exception e){
Console.WriteLine(”Oväntat fel…”);…
}
Kapitel 115
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 116
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 117
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 118
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