Transcript C# och .NET
Programmering i C#
1. En infrastruktur för
programutveckling
Ursprung
Utvecklingsgrupp hos Microsoft
2
Anders Hejlsberg
Generellt typsystem oberoende av språk
Kompilering till mellanformat
Självbeskrivande komponenter
Heltäckande klassbibliotek
Internetanpassat distribuerat system
Kapitel 1
ECMA-standard
Centrala delar i typsystem, mellanformat,
exekveringsmiljö och klassbibliotek
Språket C#
3
Common Language Infrastructure
ECMA-334
ECMA-335
Kapitel 1
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);
}
4
Kapitel 1
Hello World i C# forts.
static void Main()
{
Minimal obj =
new Minimal(”Hello World!”);
obj.DeliverMessage();
}
}
}
5
Kapitel 1
Komponentorientering
Typsystemet rent objektorienterat
Ett steg till: komponentorienterat
Stark typkontroll
Skräpsamling
Prestanda
6
Public-deklarerad klass blir komponent
Sämre än C/C++
Bättre än Java…
Kapitel 1
Common Language Infrastructure
Common Type System
Common Language Specification
Mellanformatskoden och metainformationen
Virtual Execution System
7
Obligatoriska och valfria språkmekanismer
Common Intermediate Language
Typkategorier och deras egenskaper
Exekveringsmiljön
Kapitel 1
Centrala begrepp
VB
C++
C#
Perl
Python
Klassbiblioteket
Typsystemet (CTS/CLS)
Exekveringsmiljön (VES)
…
Utvecklarens
API är klassbiblioteket
Kompilerat
till CIL
Operativsystemet
8
Kapitel 1
1.1 Typkategorier
Alla variabler är objekt
Alla typer finns i klassbiblioteket
9
Inga typer i språket
C# har ett antal synonymer till de vanligaste
Har beteende och tillstånd
Motsvarar traditionella inbyggda typer
Typerna har också CIL-namn
Kapitel 1
Tre kategorier
Klasser
Structer
Objekt har variabelnamn som representerar
objektets tillstånd (värde)
”värdetyper”
Interface
10
Objekt hanteras med referensvariabel
”referenstyper”
Klass utan implementation
Kapitel 1
Särskilda C#-kategorier
11
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
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
12
Kapitel 1
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
13
BCL + Runtime Infrastructure = Kernel
Levereras i DLL-filer innehållande CIL
Kapitel 1
Undantag (exceptions)
14
Klassbiblioteket
tillämpar
undantag
Var beredd
hantera
undantag!
try
{
DangerousCall();
…
}
catch (Exception e)
{
Console.WriteLine(”Oväntat fel…”);
…
}
Kapitel 1
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
15
En av dem innehåller då manifestet
Kapitel 1
Autentisering
Assemblies kan förses med krypterat
hashvärde i manifestet
16
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
JIT-kompilering
CIL-koden kompileras till maskinkod vid
programstart
En instans kan vara en process eller en
tråd (definieras inte i VES)
VES motsvarighet till process är
AppDomain
17
Full optimering för aktuell plattform
Isolerar exekverande program
Kapitel 1
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
18
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