Avatar billede mungojerrie Nybegynder
08. februar 2005 - 20:36 Der er 13 kommentarer og
1 løsning

get og set på en string array - howto

Hej

har et lille problem med at få skrevet min klasse færdig.


klassen ser sådan ud og visual studio brokker sig over min skrivemåde på min property:

public class BuyerParty {

    private string[] buyerContact = new string[4];
   
    public BuyerParty(){}

    public string[] buyerContact[index]
    {
        get{return buyerContact[index];}
        set{buyerContact[index] = value;}
    }
}

Hvad gør jeg forkert ??
Avatar billede arne_v Ekspert
08. februar 2005 - 20:40 #1
skal

public string[] buyerContact[index]

ikke være

public string this[index]

?
Avatar billede mungojerrie Nybegynder
08. februar 2005 - 20:57 #2
ja det er jo lige det, har fundet et eksempel hvor de skriver sådan, men som jeg kender "this", så peger det jo på en instans af klassen, altså BuyerParty og det er jo ikke den der skal kunne modtage et index som parameter......
Avatar billede arne_v Ekspert
08. februar 2005 - 20:58 #3
Med den konstruktion kan du skrive:

BuyerParty bp = new BuyerParty();
bp[2] = "abc";

er det ike det du vil ?
Avatar billede mungojerrie Nybegynder
08. februar 2005 - 21:03 #4
nej, jeg vil gerne have mulighed for at have 4 buyerContacts på hver instans af min BuyerParty
Avatar billede driis Nybegynder
08. februar 2005 - 21:11 #5
Er det så ikke fordi du bruger samme navn til din private variabel og din property ? Prøv:

public class BuyerParty {

    private string[] buyerContact = new string[4];
 
    public BuyerParty(){}

    public string[] BuyerContact[index]
    {
        get{return buyerContact[index];}
        set{buyerContact[index] = value;}
    }
}
Avatar billede mungojerrie Nybegynder
08. februar 2005 - 21:15 #6
->> driis
Det skyldes en stavefejl fra min side, jeg har skrevet det i VS som du har :-), beklager...
Avatar billede driis Nybegynder
08. februar 2005 - 21:46 #7
Hvilken compilerfejl får du ?
Avatar billede arne_v Ekspert
08. februar 2005 - 22:10 #8
Er det så:

public string[] BuyerContact
    {
        get{return buyerContact;}
        set{buyerContact = value;}
    }

og

BuyerParty bp = new BuyerParty();
bp.BuyerContact[2] = "abc";

du leder efter ?
Avatar billede arne_v Ekspert
08. februar 2005 - 22:10 #9
Du kan jo ikke have:

public string[] BuyerContact[index] <---- returnerer string[]
    {
        get{return buyerContact[index];} <---- returnerer string
Avatar billede mungojerrie Nybegynder
08. februar 2005 - 22:19 #10
jeg får denne compiler fejl:

Syntax error, bad array declarator. To declare a managed array the rank specifier precedes the variable's identifier
Avatar billede arne_v Ekspert
08. februar 2005 - 22:33 #11
using System;

public class V1
{
    private string[] s = new string[2];
    public string this[int index]
    {
        get
        {
            return s[index];
        }
        set
        {
            s[index] = value;
        }
    }
}

public class V2
{
    private string[] s = new string[2];
    public string[] S
    {
        get
        {
            return s;
        }
        set
        {
            s = value;
        }
    }
}

public class TestClass
{
    public static void Main(string[] args)
    {
        V1 v1 = new V1();
        v1[1] = "abc";
        Console.WriteLine(v1[1]);
        V2 v2 = new V2();
        v2.S[1] = "def";
        Console.WriteLine(v2.S[1]);
    }
}
Avatar billede mungojerrie Nybegynder
10. februar 2005 - 13:06 #12
kan desværre ikke bruge arne_v's eksempel, så jeg har besluttet mig til at bruge et arraylist i stedet for:

public ArrayList BuyerContact
{
    get{return buyerContact;}
    set{buyerContact.Add(value);}
}
Avatar billede arne_v Ekspert
10. februar 2005 - 22:14 #13
Om det er ArrayList eller array er vel næsten lige meget.

Den form du viser ser da lidt farlig ud. Dine get og set er ikke symmetriske, så
du kan ende op med en ArrayList som indeholder ArrayList's.
Avatar billede mungojerrie Nybegynder
11. februar 2005 - 07:22 #14
det har du da ret i arne_v - det ændrer jeg da lige.....
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
Kurser inden for grundlæggende programmering

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