Avatar billede webcreator Nybegynder
20. oktober 2004 - 15:49 Der er 18 kommentarer og
2 løsninger

Overføre objekt til metode

Hej Eksperter.

Jeg har objektet "personer", hvortil jeg har knyttet "arbejdstid", "loen" med mere - personer[antal].arbejdstid = 37

Hvordan får jeg dette overført til en anden metode? Jeg har prøvet med :

myClass.myMethod(personer[], 0)

I selve metoden ser det sådan ud :

public static void personer(object []personer, int options)
{
  // Kode her
}

Ovenstående virker dog ikke - hvorfor ?
Avatar billede sovsekoder Nybegynder
20. oktober 2004 - 15:52 #1
1) da metoden er static vil den kun ha' static variable, der nok de første problem.
2) når array'et gives videre behøver man kun at skrive "personer" dvs:
  myClass.myMethod(personer, 0)
Avatar billede sovsekoder Nybegynder
20. oktober 2004 - 15:54 #2
du skal også ha' de rigtige type rundt omkring:
public void personer(Person []personer, int options)
{
  // Kode her
}

Person[] personer;

..og
Avatar billede sovsekoder Nybegynder
20. oktober 2004 - 15:55 #3
hvor Person klassen så er:
public class Person {
  int loen = 0;
  int arbejdstid = 0;
  //osvosv...
}
Avatar billede webcreator Nybegynder
20. oktober 2004 - 16:06 #4
Hm, jeg skal jo bruge Person inde i min metoden - ikke udenfor.
Avatar billede webcreator Nybegynder
20. oktober 2004 - 16:06 #5
Jeg forstår i øvrigt ikke hvad problemet ved static er? Hvis jeg ikke har den sat som static, så kan jeg jo kun kalde min metode ved at skabe et objekt ud fra klasse den ligger i, ikke ?
Avatar billede sovsekoder Nybegynder
20. oktober 2004 - 16:08 #6
sorry, det er nok bare mig der ikke forstår...:
Avatar billede sovsekoder Nybegynder
20. oktober 2004 - 16:13 #7
men måske det her eksempel virker:
    public class Person
    {
        double arbejdstid = 0.0;

        public double Arbejdstid
        {
            get { return this.arbejdstid; }
            set { this.arbejdstid = value; }
        }
    }

    class Class1
    {
        static Person[] personer = new Person[4];

        [STAThread]
        static void Main(string[] args)
        {
            for(int i=0; i<personer.Length; i++)
            {
                personer[i] = new Person();
            }
            personer[0].Arbejdstid = 7.5;
            personer[1].Arbejdstid = 7.5;
            personer[2].Arbejdstid = 7.5;
            personer[3].Arbejdstid = 8.0;
            myMethod(personer, 0);
            Console.WriteLine("person 0 arbejder : {0} tid", personer[0].Arbejdstid);
        }

        static void myMethod(Person[] personer, int index)
        {
            personer[index].Arbejdstid = 5.0;
        }
    }
Avatar billede sovsekoder Nybegynder
20. oktober 2004 - 16:14 #8
myMethod for arrayet, og sætter person 0 til at arbejde 5 timer..
Avatar billede webcreator Nybegynder
20. oktober 2004 - 16:16 #9
Det er i orden - jeg prøver at forklare mig igen :)

Jeg har et array med objekter. Disse ser sådan ud :

person[0].arbejdstid
person[0].loen

Jeg ønsker nu at overføre /alt/ der er i "person" til en anden metode, hvor jeg vil kigge lidt på indholdet (udtrække bestemt data - fx lønsatser over 100 kr. osv.)

Min metode som skal "kigge" i de data der ligger på "person" :

public static void enMetodeHer(pers []personer, int options)
{
  // Kode her
}

Her er mit metodekald :

enMetodeHer(personer, int options);
Avatar billede webcreator Nybegynder
20. oktober 2004 - 16:17 #10
Arrayet med objekter og metoden ligger /ikke/ i samme klasse forresten
Avatar billede webcreator Nybegynder
20. oktober 2004 - 16:29 #11
Jeg tror ikke dit eksempel dutter. Har du læst min seneste forklaring ?
Avatar billede arne_v Ekspert
20. oktober 2004 - 16:49 #12
Person[] personer = new Person[2];
personer[0].arbejdstid=37;
personer[0].loen=20000;
personer[1].arbejdstid=37;
personer[1].loen=´30000;
processAlle(personer, 123);
processEn((personer[0], 123);

hvor

public void processAlle(Person[] p, int option) {
  ...
}

public void processEn(Person p, int option) {
  ...
}
Avatar billede webcreator Nybegynder
20. oktober 2004 - 18:30 #13
Jeg er simpelthen lost.

Kan jeg få en af jer til at lave et /simpelt/ eksempel på, hvordan jeg laver et array med objektet "personer", med de to properties "loen" og "arbejdstimer" ? Objektet skal ligge i sin /egen/ klasse ved navn "myClass".

Jeg vil herefter også gerne se, hvordan jeg tilgår objektet "personer" i en ny metode (kaldet "nyMetode"). Her ville det være rart, hvis I fx kunne vise et udtræk (hive noget data over i en variabel eller lignende).

Det ville være lækkert hvis I kunne vise et helt C#-dokument, så jeg heller ikke er i tvivl om placeringen af diverse kode-stumper. Det kan være det er dét der er mit nuværende problem.

- På forhånd mange tak
Avatar billede webcreator Nybegynder
20. oktober 2004 - 18:31 #14
.. jeg ville i øvrigt gerne vise jer min nuværende kode - men det er en længere operation, da jeg ikke har internet på samme PC som jeg programmere på.
Avatar billede arne_v Ekspert
20. oktober 2004 - 18:39 #15
Det her kører:

using System;

namespace DefaultNamespace
{
    public class Person
    {
        private int arbejdstid;
        private int loen;
        public int Arbejdstid
        {
            get
            {
                return arbejdstid;
            }
            set
            {
                arbejdstid = value;
            }
        }
        public int Loen
        {
            get
            {
                return loen;
            }
            set
            {
                loen = value;
            }
        }
    }
    class MainClass
    {
        public static void udskrivEn(Person p)
        {
            Console.WriteLine(p.Arbejdstid + " " + p.Loen);
        }
        public static void udskrivAlle(Person[] p)
        {
            for(int i = 0; i < p.Length; i++)
            {
                udskrivEn(p[i]);
            }
        }
        public static void Main(string[] args)
        {
            Person[] personer = new Person[2];
            personer[0] = new Person();
            personer[0].Arbejdstid = 37;
            personer[0].Loen = 20000;
            personer[1] = new Person();
            personer[1].Arbejdstid = 37;
            personer[1].Loen = 30000;
            udskrivAlle(personer);
        }
    }
}
Avatar billede arne_v Ekspert
20. oktober 2004 - 18:39 #16
Og jeg skal beklage de 2 mangelnde new 20/10-2004 16:49:22
Avatar billede arne_v Ekspert
06. november 2004 - 18:16 #17
webcreator>

Kommet videre ?
Avatar billede webcreator Nybegynder
09. november 2004 - 18:53 #18
Hej igen.

Jeg fik det til at virke - mange tak for hjælpen :)
Kan jeg få svar fra jer begge ?
Avatar billede arne_v Ekspert
09. november 2004 - 18:57 #19
ok
Avatar billede sovsekoder Nybegynder
10. november 2004 - 08:39 #20
svar
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