19. maj 2007 - 20:46
Der er
7 kommentarer og 1 løsning
Pointere i VB.NET
Hejsa, Hvordan arbejder jeg med pointere i VB.NET? Jeg har forsøgt VarPtr osv. men det kender compileren åbenbart ikke. Jeg skal bruge det til at opdatere variabler på tværs af forms. Jeg overfører de aktuelle variabler som ByRef. F.eks.: Public Sub New(ByRef paramStatusBar1Text As String) End Sub I ovenstående kan jeg så sige paramStatusBar1Text="Hej" og tekstfeltet bliver opdateret i den kaldende form, alt ok! Men jeg kan f.eks. ikke gøre det her: Dim ptrText as string Public Sub New(ByRef paramStatusBar1Text As String) ptrText = paramStatusBar1Text End Sub Fordi så kommer ptrText bare til at indeholde en kopi af teksten i paramStatusBar1Text. Hvordan gør jeg sådan at ptrText indeholder en pointer/reference tilbage til det oprindelige dataområde som paramStatusBar1Text peger på? Håber det giver mening :-) På forhånd tak!
Annonceindlæg fra DE-CIX
ptrText peger skam på den oprindelige string men strings er immutable i .NET så du kan ikke ændre den oprindelige string og der er ingen forskel på ByRef og ByVal i den kontekst mit gæt vil være at du har brug for at overføre den første form ByVal til metoden, så den kan sætte properties og kalde metoder på den første form
ellers kan du jo overføre selve objektet. Istedet for at overføre værdien fra feltet, så overfør hele objektet.
@0xffff Kan man overføre en reference til objektet?
det er hvad Public Sub New(ByVal paramStatusBar1Text As String) gør
hmmm.. arne_v, der er vi vidst ikke enige :) Så vidt jeg husker laver en egen kopi af objektet og byref er pointeren. Men det jeg mente til deamill var at hvis du nu vil have en form til at opdatere tekstfeltet på en anden form så overfør hele objektet istedet for en string. Public Sub New(objTesktFelt1 as Object) Så har du ikke problemet med strings længere.
String er en reference type ikke en value type. Så byval laver en kopi af referencen ikke af objektet.
@0xffff Jeg løste det som du sagde, ved at overføre hele objektet i stedet for. Så svar lige :)
super. rart at kunne hjælpe.
Kurser inden for grundlæggende programmering