12. april 2004 - 18:43Der er
9 kommentarer og 1 løsning
Guid problem
Hej
Jeg har en metode der tager imod en række parametre. Visse af disse parametre er af datatypen Guid.
Når jeg kalder min metode og skal sende parametre med får jeg et problem hvis min Guid parameter er tom eller blot skal indeholde en null værdi.
F.eks.
MIN METODE ========== private void InsertTable(Guid Id, string Name, Guid FK_Id1, Guid FK_Id2) { // Et eller andet.... }
MIT KALD ======== InsertTable(GuidVariabel, "Navn", "", FK_GuidVariabel2)
Ovenstående kald vil give en fejl, ved "", da denne "værdi" ikke er af datatypen Guid. Er det muligt at sende en null værdi med i stedet for "" og hvordan skrives dette ?
Det var ærgeligt - men så er jeg tilgengæld lidt forvirret, for hvad er en Struct ??? Hvis du svare på mit spørgsmål kan du ved samme lejlighed poste et svar :-)
Der findes to typer variabler i C#, value-types og reference-types. Rent teknisk befinder value-types sig på stacken og reference-types på heapen, men behøves man ikke at tænke så meget over med mindre man skal til at memory-optimere sit program.
Types af typen structs befinder sig i value-types gruppen, mens at class'es er reference-types.
Det betyder, at når du opretter er object af en klasse, så indeholder din variabel faktisk bare en adresse, en pointer, til et sted i hukommelsen. Når du sætter din variabel til null, betyder det at din variabel ikke peger noget sted hen, den er tom.
Et object oprettet fra en struct indeholder derimod SELVE indholdet. Variabel peger ikke nogen steder hen, men indeholder selve de data man arbejder med.
Ovenstående er vigtigt at huske på når man
1) skal tjekke på værdier 2) kopierer variabler a) Hvis du har en variabel indeholdene et dataset, og du opretter en ny variabel der peger på den første, så vil begge variabler pege på det SAMME dataset (adresse i hukommelsen) b) Hvis du derimod har en variabel der indeholder en Guid, og du opretter en ny variabel indeholdende den første, så har du to FORSKELLIGE Guids der er uafhængige af hinanden 3) manipulerer med input-argumenter i en metode a) Hvis man ændrer på indholdet af et argument indeholdende en reference-type ændrer du på samme indhold som din kode udenfor metoden benytter sig af
Det var overordnet meget kort remset op hvad det går ud på. Det kan godt virke lidt langhåret og skræmmende hvis man ikke har arbejdet med det før, men det er noget man skal stifte bekendtskab med før eller siden hvis man vil lave højtydende applikationer.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.