Jag kommer från Java-världen och kan inte påminna mig om att detta syntax finns där. Vad jag har förstått så använder man properties för att på ett enklare sätt skriva get/set-metoder på klass-attribut?
//ett sätt att använda property i C#
public int Myval
{
get
{
return myval;
}
set
{
myval = value;
}
}
// ett ännu enklare sätt i C#
public int property Myval
{
get;
set;
}
// motsvarar i java
public int getMyval() {
return myval;
}
public void setMyval(int newValue) {
myval = newValue;
}
Här jag uppfattat det hela rätt? Hur anropar man set i en property, dvs om man vill sätta/ändra värdet i denna variabel av objektet. Vilket av följande syntax rekommenderar ni att man använder?
om det nu är 8 du vill sätta värdet till. Det ser helt enkelt ut som att du sätter en egenskap rakt av, när du i själva verket låter en metod få ta hand om saken under ytan, och kanske eventuellt göra vissa kontroller av vad du sätter.
Okej så det är med andra ord mer eller mindre standard att använda sig av properties iställer för "klassiska" get/set-metoder? Ett sätt att göra det enklare för programmeraren?
Okej så det är med andra ord mer eller mindre standard att använda sig av properties iställer för "klassiska" get/set-metoder? Ett sätt att göra det enklare för programmeraren?
Tja, i bl a VB är det standard. En van vb-programmerare tycker att det är jättebra. En van javaprogrammerare tycker kanske att properties är som kejsarens nya kläder.
Okej så det är med andra ord mer eller mindre standard att använda sig av properties iställer för "klassiska" get/set-metoder? Ett sätt att göra det enklare för programmeraren?
Ja, det är mer eller mindre standard, och syftet är att egenskaper ska se ut som jus....egenskaper. Det finns dock många tillfällen då man bör använda get-/set-metoder i stället. Det mest är förstås en fråga om tycke och smak, men jag tycker följande:
1. Undvik writeonly-egenskaper (endast set, ingen get). Det är inte rimligt att ett objekt har en egenskap som endast kan sättas. Använd en ensam SetBlaBla i stället.
2. Två direkt påföljande hämtningar från en get-egenskap (vissa arter kan klättra i berg) ska ge samma värde.
3. En get direkt efter en set, bör helst ge tillbaka samma värde som man satte.
4. Det får finnas någon måtta på hur mycket som händer bakom kulisserna på ett par egenskaper. De är trots allt bara egenskaper, och ska upplevas som sådana.
Som kuriosa kan nämnas att get-/set-egenskaperna i .NET faktiskt inte "finns på riktigt" utan bara i klassernas metadata. I själva verket skapas riktiga get-/set-metoder.
Ex:
public int Age
{
get{return _age;}
set{_age=value;}
}
blir efter kompilering två dolda metoder (de kan anropas via Reflection, om man tycker det är roligt)
public int get_Age()
{
return _age;
}
public void set_Age(int value)
{
_age=value;
}
Compusa skrev:
// ett ännu enklare sätt i C#
public int property Myval
{
get;
set;
}