Operativsystem: .............................................................
Operativsystem: .............................................................
Operativsystem: .............................................................
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Den vigtigste forskel er teknisk: Et klasseobjekt gemmes som et referenceobjekt i heap’en, det frit<br />
tilgængelige RAM område. Hvis vi skriver således:<br />
XClass x;<br />
har vi erklæret en pointer eller reference til et XClass objekt, men vi har ikke oprettet objektet<br />
endnu! Vi opretter det nye objekt sådan:<br />
x=new XClass();<br />
På den RAM adresse (fx 1000) hvor x gemmes gemmes en anden RAM adresse (fx 4444) hvor<br />
selve objektet gemmes. Klasse objekter er altså mere ’indviklede’ end fx en int eller en struct. Et<br />
klasse obejkt kræver så at sige 2 RAM adresser: en pointer og en destination.<br />
En struct er en value type og gemmes i programmets stack, dets eget RAM område. En struct<br />
svarer til en int eller char eller double. Derfor skal en struct heller ikke – nødvendigvis - instantieres<br />
med new som et klasse objekt! (Men den kan godt instantieres med new!).<br />
Hvis vi har defineret en struct ved navn Punkt, instantierer vi et nyt punkt sådan:<br />
Punkt p1;<br />
Akkurat som vi ville skrive:<br />
int x;<br />
Når strukturer stadig bruges skyldes det at de er meget egnede til at gemme små blokke af data. En<br />
struct må helst ikke fylde mere end 16 bytes. Hvis en struct ikke fylder ret mange bytes, er den mere<br />
effektiv og hurtigere end en klasse. Dette skyldes at structs gemmes på stacken og derfor er der<br />
meget hurtigere access til disse data og en struct kræver ikke så megen ’overhead’ og ’memory<br />
management’ som en klasse.<br />
I nedenstående program er derfor brugt operatoren sizeof() for at vise hvor mange bytes structen<br />
rummer. Programmet erklærer 2 strukturer Dato og Tid og bruger dem til at ’administrere’ datoer<br />
og klokkeslet:<br />
//Eksempel paa anvendelse af structs eller strukturer:<br />
//NB en struct skal helst fylde mindre end 16 bytes!<br />
//structs er value typer som int, char, double.<br />
//structs er en gruppering af data i en 'post' eller 'record'.<br />
using System;<br />
class Strukturer<br />
{<br />
public static void Main(string[] args)<br />
{<br />
//Instantier 2 Dato objekter: NB ingen 'new':<br />
//strukturens medlemmer kan sættes direkte da de er public:<br />
Dato d1;