Avatar billede isdan Nybegynder
09. juli 2007 - 23:05 Der er 2 kommentarer og
1 løsning

Classer i C#

Jeg mangler forklaring på oprettelse og sammenhæng mellem klasser i c# er vandt til VB6..

noget simpelt.. Vi forstiller os en classe(i separet fil) som heder fangst med en enum af art  f.eks

class  Fangst
    {
    public enum Art{Thorsk,sej};
    }

og en anden classe som heder Last med collection af Fangst

og hvordan vil man så få det til at spille sammen på en form f.eks

Opret en instance af last og tilføj 2 X Fangst .. + mit problem er også hvis jeg opretter en instance af Fangst så kan jeg ikke få fat i art.  f.eks

Fangst Fangst1 = new Fangst();
Fangst1.Art.Thorsk;

Der må være noget grund forståelse i dette som jeg ikke får fat i.
Avatar billede lifo Nybegynder
10. juli 2007 - 01:11 #1
//***************************************
// filen Fangst
using System;
using System.Collections.Generic;
using System.Text;

namespace Eksperten
{
    public class Fangst
    {
        public enum Art { Thorst, Sej };
        private Art fiskensArt;
        public Art FiskensArt
        {
            get { return fiskensArt; }
            set { fiskensArt = value; }
        }
        private int tons ;
        public int Tons
        {
            get { return tons; }
            set { tons = value; }
        }

        public Fangst()
        {
            //sæt dine default værdier her
            tons = 0;
            fiskensArt = Art.Sej;
        }
        public Fangst(int hvorMegetFangedeVi, Art HvadFangedeVi)
        {
            tons = hvorMegetFangedeVi;
            fiskensArt = HvadFangedeVi;
        }
    }
}

//**************************************
// filen Last.cs
using System;
using System.Collections.Generic;
using System.Text;

namespace Eksperten
{
    public class Last
    {
        private List<Fangst> fangster = new List<Fangst>();

        public Last()
        {
            //husk at vaske lasten før den tages i brug
        }

        public void TilføjFangst(Fangst fangst)
        {
            fangster.Add(fangst);
        }
        public void TømLasten()
        {
            fangster.Clear();
        }

        //en hardcodet
        public List<Fangst> HentAlleThorske()
        {
            return fangster.FindAll(delegate(Fangst f){return f.FiskensArt == Fangst.Art.Thorst; });
        }
        // en generisk
        public List<Fangst> HentAlleAfArt(Fangst.Art artAtHente)
        {
            return fangster.FindAll(delegate(Fangst f) { return f.FiskensArt == artAtHente; });
        }
       
    }
}
//*************************************************
//Test fil i en buton event
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Eksperten
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Last skipsLast = new Last();

            //så fangede vi en last sej på 10 tons
            Fangst sejFangst = new Fangst();
            sejFangst.FiskensArt = Fangst.Art.Sej;
            sejFangst.Tons = 10000;

            // tilføj fangsten til din last
            skipsLast.TilføjFangst(sejFangst);

            // så fangede vi en last af sej igen
            Fangst igenSej = new Fangst(50000, Fangst.Art.Sej);

            // tilføj den anden fangst til lasten
            skipsLast.TilføjFangst(igenSej);


            //så fangede vi sku Thorsk
            Fangst fangst3 = new Fangst(7000, Fangst.Art.Thorst);

            //tilføj Thorsken til din last
            skipsLast.TilføjFangst(fangst3);


            //så er vi kommet til kan og skal kun lande Thorsk
            List<Fangst> landetThorskeFangst = skipsLast.HentAlleAfArt(Fangst.Art.Thorst);

            //så bagefter lander vi alle sej
            List<Fangst> landetSejFangst = skipsLast.HentAlleAfArt(Fangst.Art.Sej);



        }
    }
}
Avatar billede lifo Nybegynder
10. juli 2007 - 01:14 #2
så måske er svaret på dit såørgsmål at
din definitoin på en fangst klasse
class  Fangst
    {
    public enum Art{Thorsk,sej};
    }
definerer kun en type
og ikke en instance
det vil sige at du skal definere din type som du har gjordt og så skal du også
have en variabel instance som kan gemme en værdi af den type du har defineret
og det gør du ved
public Art FiskensArt;
Avatar billede isdan Nybegynder
10. juli 2007 - 22:46 #3
Super.. lige hvad jeg mangler..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester