Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Artiklar / Titel på artikeln

Grundkurs i C-Sharp - Strukturer

Postad 2003-01-11 av Andreas Håkansson i sektionen ASP.NET, C#, Okategoriserat med 0 Kommentarer | Läst av: 6033, Betyg: 75%

Förord

Det kan i början vara svårt att förstå sig på skillnaden mellan vad en struktur är och vad en klass är. Generellt kan man säga att en struktur är en klass fast med speciella egenskaper och restriktioner. Den absolut största skillnaden är att en struktur skapas på datorns stack och en klass skapas på datorn heap. Om du inte har någon kunskap om skillnaden på dessa så kan vi nöja oss med att säga att saker som allokeras på stacken ger oftast bättre prestanda and saker som allokeras på heap.
Innehåll
  » Struct
  » Konstruktor
  » Destruktor
  » Ärvning
  » Gränssnitt
  » Sammanfattning
  » Om skribenten
Relaterade artiklar
  » Grundkurs i C-Sharp - Arv
  » Grundkurs i C-Sharp - Gränssnitt
  » Grundkurs i C-Sharp - Introduktion
  » Grundkurs i C-Sharp - Namnrymder
  » Grundkurs i C-Sharp - Polymorphism
  » Grundkurs i C-Sharp - Statiska medlemmar
  » Grundkurs i C-Sharp - Undantagshantering
  » Grundkurs i C-Sharp - Åtkomstmodifiering
  » Grundkurs i C-Sharp - Överlastning
Skillnaden på var en struktur lagras gentemot en klass är att en struktur är en värdetyp (value type) och klasser är en referenstyp (reference type). Du kan läsa mer om vad detta är i min artikel om datatyper. I grova drag betyder detta att man arbetar direkt med informationen och inte med referenser till den.



Struct

För att skapa en struktur använder man sig av nyckelordet struct. Följande exempel visar det mest klassiskas exempel på en struktur som finns. Det är en struktur som lagrar information på en punkt i en två-dimensionell miljö.


struct Point
{
public int x;
public int y;
}



Konstruktor

Liksom klasser så kan en struktur deklarera en eller flera konstruktorer. Det finns en stor och avgörande skillnad dock, och det är att man inte kan deklarera en standard konstruktor, dvs. en som inte tar några parametrar. En standard konstruktor skapas alltid automatiskt och används för att initiera medlemmarna i en struktur till sina standard värde.

Följande exempel utökar vår Point struktur så att den har en konstruktor som används för att sätta värdena på x resp. y koordinaterna för punkten.


struct Point
{
public int x;
public int y;

public Point(int x, int y)
{
this.x = x;
this.y = y;
}
}



Destruktor

Tillskillnad från en klass så kan inte en struktur deklarera en destruktor. Det finns inte mycket mer att säga om saken utan detta är något man får leva med och det ska inte vara så svårt.


Ärvning

En struktur kan inte ingå i någon form av ärvning överhuvudtaget. Detta betyder att en struktur inte kan ärva från en annan struktur, en struktur kan inte ärva från en klass och en klass kan inte ärva från en struktur.




Gränssnitt

Det är inga problem att implementera gränssnitt i en struktur, man gör precis på samma sätt som när man gör detta med en klass. Följande exempel visar hur man implementerar ett gränssnitt i en struktur.


interface Graphics
{
void Paint();
}

struct Square : Graphics
{
public void Paint()
{
// Koden för att rita objektet
// placeras här.
}
}



Sammanfattning

För att verkligen förstå sig på vad man har för nytta av att använda strukturer istället för klasser så är det viktigt att läsa på om värdetyper (value types) och referenstyper (reference types). Ta dig tiden att förstå dessa koncept så kommer du att ha ytterligare en kraftfull teknik till ditt förfogande.


Om skribenten

Andreas bor i Helsingborg där han studerar Software Engineering vid Lunds Tekniska Högskola. Han har många års erfarenhet inom både Windows samt internet baserad programmering inom en rad olika programmeringsspråk. Ni kan komma i kontakt med Andreas på andreas@selfinflicted.org.
Upp

0 Kommentarer

Skriv en kommentar på artikeln

Ditt betyg på artikeln



Kommentar:





Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 153
27 952
271 704
1 050
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies