Avatar billede hellfishdk Nybegynder
08. februar 2006 - 21:00 Der er 9 kommentarer og
2 løsninger

Kan ikke gennemskue hvor en "suitable 'Main'" skal være

Hej

Jeg er ved at lære C#, og er absolut nybegynder, men den bog jeg lærer fra indeholde vidst en fejl, for når jeg skal kompilerer koden, får jeg er fejl meddelse:
Error    1    Program 'D:\Dokumenter\Visual Studio 2005\Projects\Kundekartotek\Kundekartotek\obj\Debug\Kundekartotek.exe' does not contain a static 'Main' method suitable for an entry point    Kundekartotek
Den kode jeg har (af)skrevet passer med den der står i min bog:

using System;
using System.Collections;
using Kundekartotek;

namespace Kundekartotek
{
    public class CPerson
    {
        //Constructor
        public CPerson(string Navn, string Adr, string Tlf)
        {
            navn = Navn;
            adr = Adr;
            tlf = Tlf;
        }

        //Opdater: Virtual metode(overrides i CKunde, som opdaterer kundedata
        virtual public void Opdater(string Navn, string Adr, string Tlf)
        {
            navn = Navn;
            adr = Adr;
            tlf = Tlf;
        }

        //Property:navn
        protected string navn;
        public string Navn
        {
            get
            {
                return navn;
            }
        }

        //Property: adr
        protected string adr;
        public string Adr
        {
            get
            {
                return adr;
            }
        }

        //Property: tlf
        protected string tlf;
        public string Tlf
        {
            get
            {
                return tlf;
            }
        }
    }
    }

public class CKunde : CPerson
    {
        private static int KundeID = 0;

        //Constructor
        public CKunde(string Navn, string Adr, string Tlf): base(Navn, Adr, Tlf)
        {
            iD = KundeID++;
        }

        //Opdater: Override metode, som opdaterer kundedata
        override public void Opdater(string Navn, string Adr, string Tlf)
        {
            //Kald metode i CPerson
            base.Opdater(Navn, Adr, Tlf);
        }

        //Property: ID
        private int iD;
        public int ID
        {
            get { return iD; }
        }

    }

    public class CKundekartotek
    {
        //Constructor
        public CKundekartotek()
        {
            arrKunder = new ArrayList();
            KundePegepind = 0;
        }

        //NyKunde:Opret ny kunde
        public void NyKunde(string Navn, string Adr, string Tlf)
        {
            try
            {
                CKunde MinKunde = new CKunde(Navn, Adr, Tlf);
                arrKunder.Add(MinKunde);
            }
            catch (Exception)
            {
                throw;
            }

        }
        //OpdaterKunde: Opdater kundens stamdata
        public void OpdaterKunde(int ID, string Navn, string Adr, string Tlf)
        {
            try
            {
                CKunde MinKunde = FindKunde(ID);
                MinKunde.Opdater(Navn, Adr, Tlf);
            }
            catch (Exception)
            {
                throw;
            }

        }

        //SletKunde: sletter kunde
        public void SletKunde(int ID)
        {
            try
            {
                CKunde MinKunde;
                MinKunde = FindKunde(ID);

                arrKunder.Remove(MinKunde);
            }
            catch (Exception)
            {
                throw;
            }
        }

        //FindKunde: Find en kunde baseret på kundeid
        private CKunde FindKunde(int ID)
        {
            bool bStopItereation = false;
            CKunde MinKunde = null;

            IEnumerator MinEnumerator = arrKunder.GetEnumerator();
            while (MinEnumerator.MoveNext() && bStopItereation == false)
            {
                MinKunde = (CKunde)MinEnumerator.Current;
                if (MinKunde.ID == ID)
                    bStopItereation = true;
            }

            if (bStopItereation == true)
                return MinKunde;
            else
                throw new CKartoteksException("Kunde ej fundet!");
        }

        private int KundePegepind;

        //FoersteKunde:Sæt pegepind til første kunde, og returnerer denne
        public CKunde FoersteKunde()
        {
            KundePegepind = 0;
            if (arrKunder.Count == 0)
                return null;
            else
                return ((CKunde)arrKunder[KundePegepind]);
        }

        //NaesteKunde: Sæt pegepind til næste kunde, og returner denne
        public CKunde NaesteKunde()
        {
            ++KundePegepind;
            if (KundePegepind >= arrKunder.Count)
            {
                --KundePegepind;
                return null;
            }
            return ((CKunde)arrKunder[KundePegepind]);
        }

        //Array af Kunder
        private ArrayList arrKunder;
    }

    public class CKartoteksException : ApplicationException
    {
        public CKartoteksException() : base() { }
        public CKartoteksException(string message) : base(message) { }
        public CKartoteksException(string message, Exception inner):
            base(message, inner) { }
    }


Er der nogen der kan hjælpe mig med at finde ud af hvor den 'Main' skal være?
Avatar billede arne_v Ekspert
08. februar 2006 - 21:12 #1
en af dine klasser skal have en:

public static void Main(string[] args)
{
  // start udfoersel
}
Avatar billede nielle Nybegynder
08. februar 2006 - 21:14 #2
Et passende sted at lægge den ind:

using System;
using System.Collections;
using Kundekartotek;

namespace Kundekartotek
{
    class Program
    {
        static void Main(string[] args)
        {
        }
    }

    public class CPerson
    {
        //Constructor
        public CPerson(string Navn, string Adr, string Tlf)
    ...


Men nu skal den jo ikke bare være der for at være der - pointen med Main(() er at det er derfra at di program starter (deraf "entry point") Det er altså der at du skal til at lave alle de interessante ting med dirn klasser.
Avatar billede hellfishdk Nybegynder
08. februar 2006 - 22:36 #3
Tusind tak det hjalp! :)

Hvis i smider et svar, så kan I få pointene. 200 hver?
Avatar billede nielle Nybegynder
08. februar 2006 - 23:02 #4
Du må maks give 200 point for et spørgsmål ... uanset hvor mange der så er om at dete dem :^)

Skal du forresten ikke have alle dine klasser inden for i namespacet? Pt. ser det kun ud til at CPerson er "indenfor".
Avatar billede arne_v Ekspert
08. februar 2006 - 23:30 #5
svar

mindre point var ogsaa OK - det var ikke noget stort arbejde at svare paa

jeg har ogsaa lige en ekstra kommentar - CXxxxx for klasse navne (ungarsk notation)
anbefales ikke til C#
Avatar billede hellfishdk Nybegynder
09. februar 2006 - 00:07 #6
nielle: der var vist sat en tuborg-klamme forkert...

arne_v: jeg skriver kun sådan, da det også bliver gjort i den bog jeg bruger. Jeg vil selv bruge kamelnotation, som i vb.net.
Avatar billede hellfishdk Nybegynder
09. februar 2006 - 00:09 #7
jeg kan ikke give 200pts til jer hver (ved ikke i hvert fald ikke hvordan). Så kan i nøjes med at dele pts'ne?
Avatar billede arne_v Ekspert
09. februar 2006 - 00:14 #8
det er rigeligt !
Avatar billede arne_v Ekspert
09. februar 2006 - 00:16 #9
den bog er nok skrevet af en gammel C++ mand - du bruger bare VB.NET
stilen, men husk at C# er case sensitiv !
Avatar billede hellfishdk Nybegynder
09. februar 2006 - 00:22 #10
Den er af Bo Brinch. Han refererer ret meget til C++...
Avatar billede arne_v Ekspert
09. februar 2006 - 00:32 #11
danske boeger ....
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