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

Att bygga en stack i C#, forts.

Postad 2007-02-03 av Patrik Hedman i sektionen ASP.NET, C#, Okategoriserat med 2 Kommentarer | Läst av: 7938, Betyg: 40%

Förord

Den här artikeln bygger vidare på den första artikeln om att bygga en stack i C#. I grunden är det mesta oförändrat men istället för att använda object så kommer vi oss att använda oss av Stack< T >. Vad detta innebär är att när man skapar en instans av stacken så väljer man vilken datatyp man vill jobba med tex, Stack< int > stack = new Stack< int >(); För att kunna åstadkomma detta så krävs några mindre förändringar i koden från förra artikeln:
Innehåll
  » Koden
Relaterade artiklar
  » Att bygga en Stack i C#


Koden


namespace Stack
{
using System;
using System.Text;
// Krävs för att kunna använda en ArrayList…
using System.Collections;

// Nyhet: Vi lägger till efter klass deklarationen...
class Stack
{
// Vi byter ut ArrayList mot List...
private List lista = new List();
private int iCurrentIndex = -1;

// Nyhet: Istället för object element använder vi T element...
public void Push(T element)
{
// Ökar värdet på iCurrentIndex med 1…
iCurrentIndex++;
// Lägger till värdet som skickas in i metoden i array listan...
lista.Add(element);
}
// Top() Returnerar nu istället för object....
public T Pop()
{
if (IsEmpty())
{
throw new IndexOutOfRangeException("Stacken är tom!");
}

// Vi lagrar det översta värdet i en tillfällig variabel element av typen ...
T element = lista[iCurrentIndex];
lista[iCurrentIndex] = default(T);
iCurrentIndex--;

return element;

}
// Top() Returnerar nu istället för object....
public T Top()
{
if (IsEmpty())
{
throw new IndexOutOfRangeException("Stacken är tom!");
}

return lista[iCurrentIndex];
}
}
}


Vad som sker här är att vi i klass deklarationen lägger till efter klassnamnet,
kommer att hålla den datatyp som vi vill använda oss av.

Funktionen Push har även den genomlidit en smärre förändring, istället för att använda
oss utav object element som tillåter oss att slänga in vilket värde vi vill så använder
vi T element.
Även Pop och Top har fått sig en liten makeover, dem returnerar nu istället för object samt så har ArrayListan bytts ut mot List.
Men vaddå T hit å T dit? Vad står T för?
Faktiskt så är det så att vi för tillfället inte vet vad T är, det är något vi bestämmer
när vi ska använda klassen.

Betrakta följande:


namespace Stack
{
using System;
using System.Text;

class Program
{
public static void Main(String[] args)
{
// Skapa en instans av objektet Stack();
Stack stack = new Stack();
// Lägg till några godtyckliga värden
stack.Push(1);
stack.Push(2);
stack.Push(3);
stack.Push(4);
// Skriv ut värdena...
stack.Print();
// Skriv ut det "översta" värdet, kräver WriteLine + ToString()...
Console.WriteLine("\nTop:");
Console.WriteLine(stack.Top().ToString());
// Tabort det "översta" värdet från listan…
Console.WriteLine("\nPop:");
Console.WriteLine(stack.Pop().ToString());
// Skriv ut den "nya" listan
Console.WriteLine("\nHela listan efter Pop()");
stack.Print();
// Vänta på att användaren trycker på någon tangent för att avsluta...
Console.ReadLine();
}
}
}


Se hur vi instansierar klassen Stack, istället för att som vanligt skriva Stack stack = new Stack();
så skriver vi nu Stack stack = new Stack(); där representerar . Vi kan nu endast
lägga till heltal i våran stack. Vill du hellre lägga till strängar så skulle du istället
skriva Stack stack = new Stack(); osv.

Jag hoppas att mina artiklar om att bygga Stackar i C# har varit till någon hjälp, har ni några frågor
eller om ni har någon kritik så är ni välkommna att skriva en kommentar.

MVH// Patrik Hedman
Upp

2 Kommentarer


  1. Simon Dahlbacka
    3 feb 2007

    Ok, en Stack är ju bra.. men varför gör du bara en halvfärdig implementation, Pop() och Top() bör också returnera T, sen är det något suboptimalt att använda sej av ArrayList som intern lagringsplats, speciellt för value typer.. ett betydligt bättre val skulle ha varit List. Kort sagt, som den är nu ger den här artikeln inte speciellt mycket mervärde över den förra..


  2. Patrik Hedman
    5 feb 2007

    Simon du har givetvis rätt i det du säger och jag har lagt till förändringarna nu, vet inte riktigt vad jag tänkte på när ja skrev ihop artikeln faktiskt...

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 079
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