Gå til innhold

Gi structure som et parameter til sub/function


Anbefalte innlegg

Videoannonse
Annonse
Skrevet (endret)

Forklar :p

Er ikke sånn uberpro i å kode ^^

 

Dette jeg vil gjøre liksom:

 

Har en structure i ett eller annet prosjekt... Sub'en som skal få structuren som parameter er inni en DLL jeg lager :)

 

Problemet er at structuren skal være dynamisk, siden DLLen skal brukes i forskjellige prosjekter... :)

Endret av Wubbable
Skrevet

Ok:

Det finnes to forskjellige minneområder i et program:

stack, og heap

forskjellen er at stack er minne som vil forsvinne out of scope, mens heap er minne som må allokeres og frigjøres.

 

Når du deklarerer en variabel av typene

byte, char, decimal, double, float, int, long, short og structs, så vil de bli allokert på stack.

class derimot, vil alltid bli lagret i heap.

 

Men når du gir parameter til en funksjon, kan de enten være ByVal, eller ByRef.

 

Men nå kommer forvirring:

stacken blir ofte brukt til å lagre nettop en stack med variabler

Så når man skal kalle en funksjon, blir alle variablene lagret etterhverandre på et gitt område, som kalles stack.

Hvis variablen er av typen ByRef, eller en class, vi det bli lagt til en peker til denne variablen.

Hvis den er en valuetype type, (int, long, float, struct) og spesifisert med ByVal, vil verdien kopieres til stack.

deretter kan funksjonen lese verdiene på stacken som parameter.

 

Kanskje dårlig forklart :p

 

men det er litt vanskelig å forklare...

 

men hovedpoenget:

class KAN IKKE sendes som byval, de vil bli byref uansett

struct er en VALUETYPE og vil bli kopiert, med mindre ByRef blir spesifisert.

Aprikos, string er en class, og vil alltid bli lagt som en referanse.

en ting som mange ikke vet også, er at man ikke kan endre på verdiene i en string (det er ikke helt sant, man kan bruke pekere i C#, og System.Runtime.Interop.Marshal i VB.NET)

Skrevet

Du forklarte meg nettopp hvorfor man bruker "New" :p

 

Men, jeg klarer meg for nå med å bare lagre en verdi :)

Fant noen tutorials på google om hvordan man måtte gjøre om structen til byte, og tilbake igjen, og noe med marshall og det der :p

 

Virka litt vanskelig though ^^

Skrevet (endret)

Fant en superenkel løsning:

 

Public Sub WriteDB(ByVal Key as string, ByVal Value as Object)

 

:)

Så fungerer den med alt :p

 

edit: Som det står i tooltip'en: Klassen over alle klasser :tease:

Endret av Wubbable

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...