Om jag har förstått det hela rätt så är alternativ 2 "mera rätt" fast det beror väl på vad du ska använda det till.
Du ska ju redan ha sett till att det som skickas in i klassen är av rätt typ och har ett värde..
5 svar · 617 visningar · startad av doggelito
Vilken är att föredra av dessa två och varför?
alt. 1
public class con
{
private string _foo;
public string Foo
{
get
{
if (_foo.Length == 0)
return "bar";
else
return _foo;
}
set { _foo = value; }
}
}
alt. 2
public class con
{
private string _foo;
public string Foo
{
get{ return _foo; }
set { _foo = value; }
}
public con()
{
_foo = "bar";
}
}
Om jag har förstått det hela rätt så är alternativ 2 "mera rätt" fast det beror väl på vad du ska använda det till.
Du ska ju redan ha sett till att det som skickas in i klassen är av rätt typ och har ett värde..
Alternativ 2.
När du deklararerar _foo utan att tilldela ett värde så gör CLR:en följande åt dig (under the hood): private string _foo; blir private string _foo = "". Med andra ord så returneras en tom sträng när du skriver con.Foo och du inte tilldelat något värde till instansvariabeln.
Varför inte göra så här istället?
public class con
{
private string _foo = "bar";
public string Foo
{
get{ return _foo; }
set { _foo = value; }
}
}
Lukaspojken skrev:
Varför inte göra så här istället?
Ja, varför inte! Tanken slog mig aldrig! :bire