Properties i C#

Tags:    c#

Hejsa :)

Jeg er i gang med at læse Teach Yourself C# in bla bla fra Sams.

Jeg har lige læst afsnittet om properties, og faldt over et lille problem. I kodeeksemplet står der noget ala (ved godt det er grimt med myx, men det er jo bare et eksempel):

Fold kodeboks ind/udKode 


Det virker også fint, men så støder jeg på en sætning (formateret med fed):

Although the code in Lines 9–30 is relatively simple, it doesn’t have to be. You can do
any coding and any manipulation that you want within the get and set. You don’t even
have to write to another data member.


Det forstod jeg sådan at man ikke behøver at have to variabler (myx og x), men kunne nøjes med x, sådan her:

Fold kodeboks ind/udKode 


Men det virker ikke! Den builder fint, men crasher når jeg kører (noget med stack overflow).

Går ud fra at man er nødt til at have to variabler så, men så har jeg vist ikke forstået sætningen i bogen korrekt.

Nogen der kan hjælpe?

Hilsen Mark



Indlæg senest redigeret d. 19.10.2007 00:13 af Bruger #2973
Hejsa :)

Jeg er i gang med at læse Teach Yourself C# in bla bla fra Sams.

Jeg har lige læst afsnittet om properties, og faldt over et lille problem. I kodeeksemplet står der noget ala (ved godt det er grimt med myx, men det er jo bare et eksempel):

Fold kodeboks ind/udKode 


Det virker også fint, men så støder jeg på en sætning (formateret med fed):

Although the code in Lines 9–30 is relatively simple, it doesn’t have to be. You can do
any coding and any manipulation that you want within the get and set. You don’t even
have to write to another data member.


Det forstod jeg sådan at man ikke behøver at have to variabler (myx og x), men kunne nøjes med x, sådan her:

Fold kodeboks ind/udKode 


Men det virker ikke! Den builder fint, men crasher når jeg kører (noget med stack overflow).

Går ud fra at man er nødt til at have to variabler så, men så har jeg vist ikke forstået sætningen i bogen korrekt.

Nogen der kan hjælpe?

Hilsen Mark


Det kan du ikke så vidt jeg er orienteret. Der skal du have erklæret variablen i din klasse.

public int x <- Er jo blot en beskrivelse af navnet på din proberty, hvad den retunerer, og hvilken adgang man har til den.



Indlæg senest redigeret d. 19.10.2007 00:26 af Bruger #10718
Du stadig huske at initializere din variabel.

Følgende skulle virke:

[code]
public int myint;

public int myint
{
get
{
return myint;
}
set
{
myint = value;
}
}



Error 1 The type 'Point' already contains a definition for 'x'

Du stadig huske at initializere din variabel.

Følgende skulle virke:

[code]
public int myint;

public int myint
{
get
{
return myint;
}
set
{
myint = value;
}
}







Indlæg senest redigeret d. 19.10.2007 11:16 af Bruger #2973
Det, der menes er:
Fold kodeboks ind/udKode 


Altså: get kan bare spytte en arbitrær gyldig værdi, og set er bare en procedure, der kan gøre hvad end du har lyst til (log-metoden her her fiktiv).

Jeg vil desuden anbefale dig at erklære dine medlemsdata som private (eller protected), og ikke blot undlade denne erklæring og løbe an på default. Det øger læsbarheden væsentligt, og det viser intentionen.

Samtidig er det vigtigt at nævne, at det er god skik ikke at lave for store properties, dvs. for mange linier. Hvis der skal ske mange ting, så lav en decideret metode til det og brug den i stedet.



Okay. Tusind tak for hjælpen :) tror jeg vil læse lidt videre så.



t