Gå til innhold

Anbefalte innlegg

Nå sitter jeg her med et spørsmål jeg må ha svar på :p

 

eksempel:

public class klassenmin 
{
private string stringenMin;

public string StringenMin
{
get
{
return stringenMin;
}
set
{
this.stringenMin = value;
}
}

}

Hva pokker er egentlig vitsen med set-get-saken? Jeg har aldri forstått poenget. For min del er det bare mer å skrive :p Hvilken praktisk nytte har egentlig dette fremfor å sette den første variablen "stringenMin" public i stedet?

Lenke til kommentar
Videoannonse
Annonse

private string _Password = null;
public string Password
{
get
{
 if( _Password == null )
    _Password = Randomize();
 return Decrypt(_Password);
}
set
{
  if( value.length < 8 )
    throw new exception("Dårlig passord!");
  _Password = Encrypt(value);
}
}

public DateTime Tiden
{
get
{
   return DateTime.Now;
}
}

 

Properties blir også automatisk synlige i VS.Net om man lager egne kontroller. Man kan sette at visse properties kun skal ha enten GET el. SET.

Lenke til kommentar
Hva pokker er egentlig vitsen med set-get-saken? Jeg har aldri forstått poenget. For min del er det bare mer å skrive :p Hvilken praktisk nytte har egentlig dette fremfor å sette den første variablen "stringenMin" public i stedet?

Jeg bruker properties pga. at jeg skriver klassevariabler på en egen måte, f.eks: m_Var eller Var_. Det ser penere ut å bruke et skikkelig property-navn.

 

Det er forresten vanlig å sette klassevariablene til private hvis du vil beskytte dem. Da kan du bruke get/set som tilgangskontroll. Du kan også forsikre deg om at brukeren av klassen ikke setter inn ugyldige verdier.

Lenke til kommentar

Det har også noe med interne ting i .NET, for å skille mellom interne data, og data brukeren har tilgang til, utenom å bruke public (vanligvis vil du ikke gi fra deg fullstendig kontrollen over hvilke data som blir lagret i klassen)

 

Property Viewer vil ikke fungere på klasser uten properties.

 

forresten så bruker jeg internal og protected mer en private (som jeg sjeldent bruker)

Lenke til kommentar
  • 2 uker senere...

en ting, hvordan får man Visual Studio (2005 beta2) til å automatisk lage disse get/set-metodene for en når en legger til attributter i en klasse?

 

jeg har et stort antall domeneklasser i applikasjonen min hvor slike metoder er nødvendige.

 

jeg kommer fra javaverdenen og holder på å lære meg .net/c#. Eclipse gjør jo denne automatiseringen enkelt og greit.

Lenke til kommentar
  • 2 uker senere...

internal betyr at verdien synes kun innefor ditt prosjekt, dette er veldig hendig for større biblioteker med avanserte algoritmer, da får du direkte tilgang til variablene, men ikke de som bruker biblioteket ditt i et annet prosjekt.

 

En protected variabel synes kun innefor den klassen, og alle klasser som inheriter den klassen, men er usynlig for objekter utenfor den klassen.

 

private er internt for den ene klassen variablen er deklarert i.

Lenke til kommentar
  • 4 uker senere...
en ting, hvordan får man Visual Studio (2005 beta2) til å automatisk lage disse get/set-metodene for en når en legger til attributter i en klasse?

 

jeg har et stort antall domeneklasser i applikasjonen min hvor slike metoder er nødvendige.

 

jeg kommer fra javaverdenen og holder på å lære meg .net/c#. Eclipse gjør jo denne automatiseringen enkelt og greit.

4815103[/snapback]

 

Høyreklikk egenskap i klassen -> Refactoring -> Encapsulate field.

Da mekker den getset for den variabelen du står på. Har ikke funnet ut hvordan ta mange i en engang, men slikt kan man lage makroer for.

Lenke til kommentar
  • 2 måneder senere...

I eksemplene jeg har lest har de f.eks droppet set på constructor men plutslig lagt det til på en funksjon. Hvorfor viser de to forskjellige ting? En ting til nå som vi er inne på det med klasser. Når er det man skal sette statisk funkskjon/property? Ser ut som det er mye letter å bare sette det, så man slipper å definere det inn til en variabel først, men det må jo være en tid du kan bruke det. For vanlige greia er der ikke uten grunn?

Endret av Zic0
Lenke til kommentar
  • 1 måned senere...
... En protected variabel synes kun innefor den klassen, og alle klasser som inheriter den klassen, men er usynlig for objekter utenfor den klassen.

4864412[/snapback]

I Java innebærer protected at egenskapene er tilgjengelige innenfor samme package også, har C# en tilsvarende parallell, altså at egenskaper som er protected også er tilgjengelige innen samme namespace? Jeg vet ikke svaret i skrivende stund, men det kan være interessant å undersøke.

Lenke til kommentar

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