Skrivet av anon150287:
Hmm, ja du har helt rätt, jag som såg fel
Är dock fortfarande viktigt o skilja på metoder och properties.
Metoder och attribut menar du väl? Attributen innehåller sedan vissa värden (properties) för objektet.
Jag ser fyra möjliga lösningar på detta:
1) Använda get/set direkt (string attr { get; set; }, arbetar som ett publikt attribut då)
2) Använda get/set som metod (set ex. 2).
3) Använda get som metod (se ex. 3), och set som metod (se ex. 4).
4) Separera till två olika metoder som Elgot skrev.
Ex. 2
public string method1
{
get {
return attribute1;
}
set {
if (value ... blablabla, lokik osv)
attribute1 += value;
}
}
Ex. 3
public string get_method1
{
get {
return attribute1;
}
}
Ex. 4
public string set_method1
{
set {
if (value ... blablabla, lokik osv)
attribute1 += value;
}
}
Jag vet inte med er. Men get/set ger renare kod ibland än vad man skulle få av en metod. Och det finns en logisk anledning varför Microsoft lade till detta i C#.
Att använda get/set, ger programmeraren möjligheten att fortfarande ha kontroll över vad som läses/skrives från/till attributet.
Så get/set fungerar fortfarande som metoder och hindrar andra objekt från att göra felaktiga modifieringar av attributet.
Ta det såhär, vilket är snyggast att kalla, och ger minst kod som det kan bli fel med:
nåttX = objektet.get_X();
nåttX = objektet.X;
objektet.set_X("nytt värde");
objektet.X = "nytt värde";
objektet.X och objektet.X = "...", är fortfarande metoder som kallas (som kapslar in) och kan validera datan. Bara att det är ett nytt sätt att koda/designa det med.
Däremot i detta fallet, används get/set utan någon form av datavalidering, och blir då som att använda ett publikt attrubut. Men! Om programmerarna senare skulle besluta att lägga till validering, så kommer bara koden i denna klassen behöva justeras, och ingen annan stans.