---
title: "ByRef fungerar inte som jag vill den ska göra :("
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/87463-byref-fungerar-inte-som-jag-vill-den-ska-göra"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "Mc Fetto"
published: "2003-10-02T10:57:55.000Z"
updated: "2003-10-02T17:11:11.000Z"
replies: 6
views: 217
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/87463-byref-fungerar-inte-som-jag-vill-den-ska-göra"
---

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

## #1 — Mc Fetto, 2003-10-02T10:57Z

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?

Permalänk: https://www.webforum.nu/p/87463

## #2 — niko, 2003-10-02T13:43Z

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.

Permalänk: https://www.webforum.nu/p/1173469

## #3 — Mc Fetto, 2003-10-02T13:57Z

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)

Permalänk: https://www.webforum.nu/p/1173483

## #4 — niko, 2003-10-02T14:32Z

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.

Permalänk: https://www.webforum.nu/p/1173509

## #5 — Mc Fetto, 2003-10-02T14:53Z

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é?

Permalänk: https://www.webforum.nu/p/1173520

## #6 — niko, 2003-10-02T16:44Z

> 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?

Permalänk: https://www.webforum.nu/p/1173591

## #7 — Mc Fetto, 2003-10-02T17:11Z

Får prova det, tack niko!

Permalänk: https://www.webforum.nu/p/1173605

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/87463-byref-fungerar-inte-som-jag-vill-den-ska-göra
