C# (udtales C sharp) er et relativt nyt
sprog specielt udviklet til programmering
på .NET-platformen.
C# har rødder i C++ og Java, og kendere
af disse programmeringssprog vil
hurtigt føle sig hjemme i C#-verdenen.
Denne bog beskriver sproget og viser,
hvordan du selv kan lave programmer
i C#. Sproget er konstrueret med
objektorientering for øje og derfor
lægges der vægt på de objektorienterede
teknikker og discipliner.
Hvert kapitel afsluttes med en række
test-spørgsmål, der sikrer, at du har
forstået stoffet.
Stoffet i bogen henvender sig til begyndere
og øvede programmører. Der
kræves ikke kendskab til C#.
Vælg dit udviklingsmiljø
Visual Studio
Sharpdevelop
eller bare en teksteditor og
kompiler.
Det hele kan bruges med
denne bog.
Læs om
Forskelle og ligheder mellem
C#, Java og C++
.NETs opbygning og fordele
Namespaces, klasser og
grundlæggende syntaks
Objektorienteret programmering
Undtagelser (exceptions)
Hændelser (events)
Interfaces
Collections
Assemblies
DLL
Windows-programmering
Tråde
I/O og serialisering
Indhold
Indledning
Om at læse bogen
C# features
Indledning
Tid til "roll-out"
Forskelle og ligheder mellem C# / Java / C++
C# er et fortolket sprog
Filnavne i C#
I C# er pointere en mulighed
C# har automatisk hukommelsesstyring
C# benytter namespaces
C# har structs
Der eksisterer ikke et klassebibliotek i C#
C# har indbygget operatoroverstyring
C# tildeler variabler default værdier
Test dig selv
.NET platformen
Indledning
Grundbestanddele i .NET
Assemblies
CTS (Common Type System)
CLS (Common Language Specification)
MSIL (Microsoft Intermediate Language) og metadata
CLR (Common Language Runtime)
Hvad sker der helt præcist når applikationen startes?
Fordele ved brug af Just in time kompilering
Et nærmere kig på http://msdn.microsoft.com
Test dig selv
C# - det mest grundlæggende
Indledning
C# er objektorienteret
Simpel kompilering
Andre muligheder for output
Output mulighed
Beskrivelse
Om Main
Punktumoperatoren
Om Console.WriteLine og Console.ReadLine
Simple typekonverteringer
Formatteringer
Tegn
Betydning
Mere om System typer
Boxing
System typers standardværdier
Simple arrays
String klassen
Tegn
Betydning
StringBuilder klassen
Regex klassen - Regular Expressions
Konstanter i C#
Operatorer i C#
Navn
Operator
Valg
Iterationer
Rektangulære og uens arrays - arrays i flere dimensioner
Metoder i C#
Opdeling af kildekode på flere filer
Namespaces og brugen af namespaces
Math klassen
Kommentarer i kildekoden
Test dig selv
Objektorienteret programmering i C#
Indledning
Struct - en datakontainer
Structs har konstruktører
Klasser
Konstruktører
C# har automatisk hukommelsesstyring
Explicit kald til den automatiske hukommelsesstyring
Mere om automatisk hukommelsesstyring
Når der skal gives adgang til private variabler - properties
Statiske read-only variabler
Arv
Protected variabler i baseklassen
Arv stoppes med sealed
Når "er-en/er-et" relationen er falsk benyttes "har-en/har-et" relationen
Indlejrede klasser
Polymorfi
Abstrakte klasser og metoder
Test dig selv
Undtagelser
Indledning
Kaste en undtagelse
Gribe en undtagelse
Garanti for udførsel - finally
HelpLink - hjælp til brugeren
Egne undtagelsesklasser
Indlejrede try - catch sektioner
Test dig selv
Interfaces
Indledning
Definition af et interface
Regler ved arv
Reference til interfaces
Flere interfaces i hieraki
Explicit implementering af interfaces
Indbyggede interfaces i .NET platformen
Test dig selv
Collections
Indledning
Klasserne i System.Collections namespacet
Interfaces i System.Collections namespacet
ArrayList - et smartere array
Flere ArrayList metoder
Stack og Queue klasserne
Test dig selv
Operatoroverstyring
Indledning
Indexers
Overblik over operatorstyring
Husk at operatorstyring skal være intuitiv
Unær operatoroverstyring
Binær operatoroverstyring
Lighedsoperatoren
Sammenligningsoperatorer
Test dig selv
Parametriserede klasser
Indledning
En parametriseret klasse skabes på heap''en
En Firkant klasse - som templateklasse
Parametriserede interfaces
Parametriserede baseklasser
Begrænsninger i brugen af parametriserede metoder
System.Collections.Generic
Boxing - unboxing princippets problem
Test dig selv
Delegater og hændelser
Indledning
Delegater
Delegater og klassemetoder
Multicast delegater
Hændelser (eng. events)
Test dig selv
Assemblies
Indledning
Et nærmere kig på assemblies
Hvad sker der når kildekoden kompileres?
Mellem kompilering og exe filen
Metadata
IL kode
Versionsnummer
Obfuscatorer
Test dig selv
DLL og typereflektion
Indledning
DLL - container til logik
Hvordan bruges en DLL?
Statisk linket DLL
Brugen af en statisk DLL
Undtagelser og DLL
Dynamisk linket DLL
Fremstidssikring med dynamisk linket DLL
Fejlretning med dynamisk linket DLL
Eksempel med dynamisk linket DLL
Aflæsning af en DLL på kørselstidspunktet - type reflektion
Test dig selv
GUI - Programmering med vinduer
Indledning
Forskellige GUI typer
Forskellen mellem konsol og GUI programmer
En GUI applikations grundlæggende bestanddele
System.Windows.Forms namespacet
Klassen Control
Mere om hændelser
Bestemmelse af museknapper
Tastaturhændelser
Klassen Form
En forms tilstande
Brugen af Visual Studio 2005 Designer
Placering af knapper og andre kontroller
Design med kontroller
Brug af flere forme
En forms adfærd
Kommunikation mellem forme
Flere Form kontroller
CheckBox
RadioButton
Default værdier
ListBox
ProgressBar
TreeView
Mere om TreeNode
DateTimePicker og MonthCalendar
DateTimePicker
MonthCalendar
LinkLabel
MaskedTextBox
Indbyggede dialogbokse
Menuer
Konformitet - ens tilgang til mange applikationer
En simpel menu
Genveje fra tastaturet
Pop-up bokse
Statusbar
Introduktion til GDI (Graphical Device Interface)
System.Drawing namespacet
Type
Kommentar
Graphics klassen
Metode
Kommentar
Adgang til grafikobjektet
OnPaint eksempel
FromHwnd eksempel
PaintEventHandler eksempel
Koordinatsystemet i GDI
Rotering af grafiske objekter
Test dig selv
Tråde
Indledning
Thread klassen
Metoder
Kommentar
Property
Kommentar
Et simpelt eksempel med en trådmetode
Trådprioriteter og trådstyring
Synkronisering af tråde
lock
Monitor
Trådmetoder med argumenter
Test dig selv
I/O og Serialisering
Indledning
System.IO namespacet
Indhold
Kommentar
Eksempel - læsning af filstruktur
Læsning af undermapper
Skabe nye mapper
Eksempel - information om filer
Udledning af informationer om filer
Property
Kommentar
Filer
Eksempel - at skabe en tekstfil
Eksempel - at læse en tekstfil
Eksempel - at skabe en binær fil
Eksempel - at læse en binær fil
Serialisering
Markering af en klasse for serialisering
Serialisering og arv
Serialisering og .NET klasserne
Formatters
Adgang til formatters
Variabler, properties og formatters
Eksempel - BinaryFormatter
Eksempel - SOAP formatter
Eksempel - XmlSerializer
Test dig selv
Appendix A: Visual Studio 2005 samt Visual C# 2005 Express Ed.
Visual Studio 2005
Visual C# 2005 Express Edition.
Appendix B: SharpDevelop
Projektoversigt
Opsætning af GUI komponenter
Appendix C: Programmering med simpel editor
Compilerflag
Appendix D: Liste over operatorer
Stikordsregister