Avatar billede ahara Nybegynder
11. juli 2005 - 23:37 Der er 21 kommentarer og
1 løsning

Array indeholdende referencer til objekter

Hvordan jeg jeg et array indeholdende referencer til objekter i C#? Kan nogen vise et eksempel?

Tak
AHR
Avatar billede arne_v Ekspert
12. juli 2005 - 00:16 #1
object[] oa = new object[2];
oa[0] = o1;
oa[1] = o2;

ellers må du præcisere hvad du leder efter
Avatar billede ahara Nybegynder
12. juli 2005 - 13:01 #2
Hvis jeg f.eks. har følgende:

Bil bil1 = new Bil(Fiat);
Bil bil2 = new Bil(Volvo);

Men jeg ønsker at de skal ligge i et array

Bil[] b = new Bil[2];
b[0] = new Bil(Fiat);
b[1] = new Bil(Volvo);
Avatar billede ahara Nybegynder
12. juli 2005 - 13:01 #3
Det giver en fejl i b[0] og b[1]
Avatar billede arne_v Ekspert
12. juli 2005 - 13:21 #4
de ser OK ud - matcher variablene Fiat og Volvo constructor i Bil ?
Avatar billede ahara Nybegynder
12. juli 2005 - 16:18 #5
Jeg får følgende fejl i b[0] og b[1]

Syntax error, ']' expected

Hvis jeg nu bruger følgende virker det:

Bil[] b = new Bil[]
{
    new Bil(Volvo)
    new Bil(Ford)
};

Men så kan jeg ikke indeksere i arrayet bagefter. Jeg kan ikke sige b[0].blabla

Nogen nye ideer
Avatar billede roenving Novice
12. juli 2005 - 16:21 #6
Nu var arne_v en anelse subtil, da han snakkede om variablerne, men måske mener du:

Bil[] b = new Bil[2];
b[0] = new Bil("Fiat");
b[1] = new Bil("Volvo");
Avatar billede ahara Nybegynder
12. juli 2005 - 16:24 #7
Den er jeg enig i. Men det er ikke fejlen bare mig der har skrevet forkert her
Avatar billede arne_v Ekspert
12. juli 2005 - 16:26 #8
using System;

namespace E
{
    public class Bil
    {
        private string name;
        public Bil(string name)
        {
            this.name = name;
        }
        public string Name
        {
            get
            {
                return name;
            }
            set
            {
                name = value;
            }
        }
        public override string ToString()
        {
            return name;
        }
    }
    class MainClass
    {
        public static void Main(string[] args)
        {
            Bil[] b = new Bil[2];
            b[0] = new Bil("Fiat");
            b[1] = new Bil("Volvo");
            for(int i = 0; i < b.Length; i++)
            {
                Console.WriteLine(b[i]);
            }
        }
    }
}

virker fint hos mig
Avatar billede ahara Nybegynder
12. juli 2005 - 17:47 #9
Nedenstående er et andet eksempel jeg har lavet, men det virker heller ikke. Jeg får fejlen:

Syntax error, ']' expected
Class, struct, or interface method must have a return type
Type expected

Fejlen er i:

Player[] p = new Player[2];
p[0] = new Player("Computer", false);
p[1] = new Player("Human", false);

/HER ER MIN KODE/

public class Player
{
    String name;
    bool playing;

    public Player(String name_x, bool playing_x)
    {
        name=name_x;
        playing=playing_x;
    }

    public void setPlaying()
    {
        playing=true;
    }

    public void setWaiting()
    {
        playing=false;
    }

    public bool getPlaying()
    {
        return playing;
    }
}

Player[] p = new Player[2];
p[0] = new Player("Computer", false);
p[1] = new Player("Human", false);
Avatar billede ahara Nybegynder
12. juli 2005 - 17:49 #10
Kan jeg evt bruge en anden syntaks til mit array
Avatar billede arne_v Ekspert
12. juli 2005 - 17:50 #11
hvor står den assignment helt præcist ?
Avatar billede arne_v Ekspert
12. juli 2005 - 17:50 #12
følgende virker nemlig helt fint hos mig:

using System;

public class Player
{
    String name;
    bool playing;

    public Player(String name_x, bool playing_x)
    {
        name=name_x;
        playing=playing_x;
    }

    public void setPlaying()
    {
        playing=true;
    }

    public void setWaiting()
    {
        playing=false;
    }

    public bool getPlaying()
    {
        return playing;
    }
}

class MainClass
{
    public static void Main(string[] args)
    {
        Player[] p = new Player[2];
        p[0] = new Player("Computer", false);
        p[1] = new Player("Human", false);
    }
}
Avatar billede ahara Nybegynder
12. juli 2005 - 17:52 #13
Hvad mener du med assignment?

Mangler jeg at inkludere et bibliotek eller? Man skal da ikke inkludere noget for at bruge et array.
Avatar billede arne_v Ekspert
12. juli 2005 - 17:53 #14
hvor står de her 3 linier:

Player[] p = new Player[2];
p[0] = new Player("Computer", false);
p[1] = new Player("Human", false);

?
Avatar billede arne_v Ekspert
12. juli 2005 - 17:54 #15
jeg kommer lige til at tænke - du er oprindeligt C++ mand ikke ?

modsat C++ skal alt i C# være inden i en class
Avatar billede ahara Nybegynder
12. juli 2005 - 17:56 #16
Koden ligger direkte under følgende:

public class Form1 : System.Windows.Forms.Form
{
//Her opretter jeg lidt objekter. Det virker fint
//Her oprettes også mit array, men må det ikke ligge her
Avatar billede arne_v Ekspert
12. juli 2005 - 17:58 #17
Player[] p = new Player[2];

kan godt stå på class niveau

p[0] = new Player("Computer", false);
p[1] = new Player("Human", false);

skal ind i en metode
Avatar billede arne_v Ekspert
12. juli 2005 - 17:59 #18
ellers skal du tilbage til din 16:18:06 løsning som godt kan stå på class niveau

og indexeringen bør også kunne bringes til at virke
Avatar billede ahara Nybegynder
12. juli 2005 - 18:05 #19
Hmm - prøver lige. Tror det virker hvis jeg gør som du siger. Jeg forsøger at oprette mit array på class niveau og ligger initialiseringen ind i Form_Load. Vender tilbage. På forhånd tak
Avatar billede ahara Nybegynder
12. juli 2005 - 20:34 #20
Virker perfekt. Et svar og der er point
Avatar billede arne_v Ekspert
12. juli 2005 - 20:37 #21
ok
Avatar billede ahara Nybegynder
12. juli 2005 - 20:38 #22
Tak for hjælpen
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