Avatar billede h-w.dk Nybegynder
11. oktober 2007 - 11:09 Der er 10 kommentarer og
1 løsning

Objecter og instansvariabler

Jeg sidder med et lille problem. Jeg opretter flere objecter, og vil gerne påvirke et object fra et andet object. Jeg har en metode i mit object, som jeg gerne vil have til at ændre på en instansvariabel i et andet object. Er der nogen der kan hjælpe?
Avatar billede nielle Nybegynder
11. oktober 2007 - 11:49 #1
Hvis det er fra en instans til en og kun en af alle de andre instanser af samme klasse, skal den første instans have en reference til den anden.

Hvis det er fra en instans til samtlige andre instanser, så kan det eventuelt gøres via en static-variabel/metode.
Avatar billede xonidk Nybegynder
11. oktober 2007 - 11:56 #2
Det skal være fra en instans til én anden, og derefter fra den anden instans til den tredje.
Avatar billede nielle Nybegynder
11. oktober 2007 - 13:51 #3
Kunne du prøve at give et lille eksempel på hvad du ønsker at kunne gøre - der er mange muligheder og det er klart fedest at give et eksempel på noget som lægger sig op ad det du skal bruge.
Avatar billede h-w.dk Nybegynder
11. oktober 2007 - 13:57 #4
Jeg skal lave en enigma kryptering. Jeg har flere objecter kaldet rotor, som alle har en position de fra standart står i. Når så en rotor når en bestemt position, skal den fortælle den næste rotor at den skal rykke sig. Så jeg skal få rotor1 til at fortælle rotor2 hvad den skal gøre osv.
Avatar billede nielle Nybegynder
11. oktober 2007 - 15:33 #5
Altså noget i denne stil?

    class Program
    {
        static void Main(string[] args)
        {
            // Opretter dem i modsat rækkefølge.
            Rotor rotor3 = new Rotor();
            Rotor rotor2 = new Rotor(rotor3);
            Rotor rotor1 = new Rotor(rotor2);

            for (int tidenGår = 1; tidenGår <= 100; tidenGår++)
            {
                rotor1.RykRotor();

                Console.WriteLine("Rotor1: {0}, Rotor2: {1}, Rotor3: {2}",
                    rotor1.position, rotor2.position, rotor3.position);
            }
        }
    }

    class Rotor
    {
        private Rotor næsteRotor;

        public int position = 0;
        private const int rykNæstePosition = 5;

        public Rotor() : this(null) { }

        public Rotor(Rotor næsteRotor)
        {
            this.næsteRotor = næsteRotor;
        }

        public void RykRotor()
        {
            position++;
            if (position == rykNæstePosition)
            {
                position = 0;

                if (næsteRotor != null)
                    næsteRotor.RykRotor();
            }
        }
    }
Avatar billede nielle Nybegynder
11. oktober 2007 - 18:17 #6
xonidk == h-w.dk ?
Avatar billede h-w.dk Nybegynder
11. oktober 2007 - 18:38 #7
ja, undskyld... havde glemt jeg havde en meget gammel bruger herinde :)

Ja jeg tror det er noget i den stil jeg skal bruge, men har desværre ikke tid til at kigge på det før i morgen tidlig, så vender lige tilbage med feedback
Avatar billede nielle Nybegynder
11. oktober 2007 - 18:40 #8
Ahem, ifølge E's regeler er det ikke tilladt at have flere brugere. Du bør derfor deaktivere den ene asap.
Avatar billede h-w.dk Nybegynder
12. oktober 2007 - 09:24 #9
Du er Verdensmand! Det var lige det jeg manglede, mange tak for hjælpen.

Smid et svar!
Avatar billede nielle Nybegynder
12. oktober 2007 - 09:32 #10
Jeg har valgt en løsning, hvor at man opretter referencen som en del af constructoren. Den er ideel når man allerede kender sammenhængen mellem objekterne fra starten af. En anden metode ville være at give mulighed for at man opretter referencerne efter at objekterne er oprettet.

... og et svar :^)
Avatar billede h-w.dk Nybegynder
12. oktober 2007 - 09:37 #11
Ja, har fundet ud af at der er andre muligheder, men som du siger så virker det her som en meget god løsning i denne situation.
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