webForumDet fria alternativet

ByRef fungerar inte som jag vill den ska göra :(

.NET

6 svar · 205 visningar · startad av Mc Fetto

Medlem sedan nov. 20022 355 inlägg
Frågan#1

Har detta deklarerat i min mainForm:

     Private counter As Integer = 0
    Private myAnstalldaArray As Array = Array.CreateInstance(GetType(TimAnställd), 100)

Och så skapar jag en ny form där jag skickar med arrayen och räknaren:

         Dim myTimForm As TimForm
        myTimForm = New TimForm(myAnstalldaArray, counter)
        myTimForm.Show()

I den nu nya formen har jag två privat deklarerade variabler som jag "för" över dess värden till:

    Public Sub New(ByRef listArray() As TimAnställd, ByRef count As Integer)
        MyBase.New()

        myAnstalldaArray = listArray
        tempCounter = count
        'This call is required by the Windows Form Designer.
        InitializeComponent()

        'Add any initialization after the InitializeComponent() call

    End Sub

Att lägga in i arrayen är inga problem men caounter har rätt värde när jag skickar in den men har samma värde i mainForm när jag kommer tillbaka dit! I den nya formen så räknas counter upp!

Någon som kan förklara?

Medlem sedan juni 20022 599 inlägg
#2

Du bifogar ingen kod där du verkligen ändrar värdet på count. Var gör du det? Om du menar att du nånstans ändrar värdet på tempCounter så kommer det inte att ha nån effekt eftersom tempCounter bara är en kopia.

Medlem sedan nov. 20022 355 inlägg
#3

Men jag trodde att när jag skickade med counter till konstruktorn med ByRef, trodde jag man skickade referens till platsen i minnet där counter lagras. (som i C t ex)

Medlem sedan juni 20022 599 inlägg
#4

Ja, det gör du också, men sen kopierar du innehållet i denna minnesplats till en helt annan minnesplats (tempCounter) som inte har samma adress som count.

Medlem sedan nov. 20022 355 inlägg
#5

Ja, man har inte huvet med sig alltid :)
Löste problemet med att i huvudfönstret skapa count med shared
och sedan ifrån det andra fönstret skapa ett objekt av huvudfönstret. Värdelös lösning men jag kom inte på någon bättre för stunden...
Någon som har en bättre idé?

Medlem sedan juni 20022 599 inlägg
#6

Någon som har en bättre idé?

Svårt att säga, men eftersom du definierar count som Shared så antyder du ju att den egentligen inte har något med nån specifik instans av formen att göra utan är global/unik. Isåf kanske du kunde skapa en ny klass där både Arrayen och Count är statiska properties så att de blir tillgängliga överallt utan att du behöver bolla dem fram och tillbaka?

Medlem sedan nov. 20022 355 inlägg
#7

Får prova det, tack niko!

1073 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
944 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)