08. december 2003 - 10:13
Der er
17 kommentarer og 1 løsning
Property syntaks
Jeg har et lille syntaks spørgsmål: Jeg har: class X{ IList list = new Arraylist(); ... } class Y{ Y(){ object obj = new X().List[3] } } Hvordan laver jeg en property i class X så jeg kan kalde den som her i class Y?
Annonceindlæg fra Barco
08. december 2003 - 10:19
#1
Mener du sådan her? class X{ public IList List = new Arraylist(); ... } class Y{ Y(){ object obj = new X().List[3] } }
08. december 2003 - 10:23
#2
nej jeg mener class X{ private IList list... public List[]{ //kender ikke syntaks get{ return list[3] } } } således at jeg henter værdien igennem en index-property. You see? :-)
08. december 2003 - 10:23
#3
Jeg forstå ikke helt hvad det er du leder efter. Muligvis er det en indexer. class X { private IList list; ... public object this[int no] { get { return list[no]; } } ... }
08. december 2003 - 10:24
#4
return list[3] 3 skal selvfølgelig være en variabel: return list[index]
08. december 2003 - 10:25
#5
Ovenstående gør at man kan bruge: X x = new X(); ... object o = x[3]; til at hente det fjerde element i listen inden i X med.
08. december 2003 - 10:26
#6
arne_v -> den har jeg prøvet, men så vidt jeg kunne se virker den som: Y(){ X xref = new X(); object o = xref[4]; } og ikke xref.List[4];
08. december 2003 - 10:33
#7
Ja. Men så vil du vel bare: class X{ Private IList list = new Arraylist(); ... public IList List { get { return list; } } }
08. december 2003 - 10:34
#8
Jeg synes iøvrigt at det er mere encapsulerende med indexeren frem for en list property, men jeg har mange sære ideer.
08. december 2003 - 10:40
#9
Hmm I see your point, det er måske ikke super duper at returnere hele listen, men jeg kan ikke lide den første løsning, for hvad nu hvis jeg har: class X{ IList liste1; IList liste2; } så kan jeg vel ikke bruge this-måden? Jeg kan jo altid lave en klassisk Get-metode, men troede bare at det kunne laves som property :-)
08. december 2003 - 11:03
#10
Det har du ret i. Indexeren forudsætter at der er et "naturligt" index.
08. december 2003 - 11:18
#11
Passer ikke - der er jo 2D indexers. class X { private IList list1; private IList list2; ... public object this[int list,int no] { get { if(list==1) { return list1[no]; } else if(list==2) { return list2[no]; } else { // do something bad } } } ... }
08. december 2003 - 11:27
#12
tja... jeg er godt nok ikke vild med den this-løsning, så er jeg nok mere til go'e gamle Get-tricket
08. december 2003 - 11:46
#13
Enhver sin smag. Jeg synes da at: X x = new X(); object o1 = x[1,3]; object o2 = x[2,4]; er en OK syntax.
08. december 2003 - 14:19
#14
ja enig, men stadig så synes jeg at indlæget 10:33:28 var bedre, hvis ikke det så gav uhindret adgang til hele listen. Det er vel også overkill at begynde at lave noget adgangsproxy ind imellem ik?
08. december 2003 - 14:47
#15
Måske vil du lave en simple property til en ArrayList wrapper med begrænset funktionalitet ?
08. december 2003 - 14:48
#16
Der er mange muligheder at gøre det på.
11. december 2003 - 10:32
#17
ok tak for hjælpen... (=svar)
11. december 2003 - 10:42
#18
svar
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.