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

Programmering i C#

  • 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

Page 1: Programmering i C#

Programmering i C#

1. En infrastruktur för programutveckling

Page 2: Programmering i C#

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

Page 3: Programmering i C#

Kapitel 13

ECMA-standard

Centrala delar i typsystem, mellanformat, exekveringsmiljö och klassbibliotek Common Language Infrastructure ECMA-334

Språket C# ECMA-335

Page 4: Programmering i C#

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);}

Page 5: Programmering i C#

Kapitel 15

Hello World i C# forts.

static void Main(){

Minimal obj = new Minimal(”Hello World!”);

obj.DeliverMessage();}

} }

Page 6: Programmering i C#

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…

Page 7: Programmering i C#

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

Page 8: Programmering i C#

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 …

Page 9: Programmering i C#

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

Page 10: Programmering i C#

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

Page 11: Programmering i C#

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

Page 12: Programmering i C#

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

Page 13: Programmering i C#

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

Page 14: Programmering i C#

Kapitel 114

Undantag (exceptions)

Klass-biblioteket tillämpar undantag

Var beredd hantera undantag!

try{

DangerousCall();…

}catch (Exception e){

Console.WriteLine(”Oväntat fel…”);…

}

Page 15: Programmering i C#

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

Page 16: Programmering i C#

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

Page 17: Programmering i C#

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

Page 18: Programmering i C#

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