2008-10-15 9 views
7

Wie richte ich einen Standardwert auf eine Eigenschaft wie folgt definiert:Wie legen Sie einen Standardwert mit "kurzen Stil" Eigenschaften in VS2008 (automatische Eigenschaften) fest?

public int MyProperty { get; set; } 

, dass "prop" [Tab] [Tab] in VS2008 (Code-Schnipsel) verwendet.

Ist es möglich, ohne wieder in den "alten Weg" zu fallen ?:

private int myProperty = 0; // default value 
public int MyProperty 
{ 
    get { return myProperty; } 
    set { myProperty = value; } 
} 

Vielen Dank für Ihre Zeit. Mit freundlichen Grüßen.

+0

Als Randbemerkung, brauchen Sie nicht eine Eigenschaft auf seinen normalen Standardwert (wie int i = 0) einzustellen. Das passiert automatisch, wenn die Klasse instanziiert wird. –

+0

Nun, ich wähle Int, weil das erste, was mir in den Sinn kam ... aber ich möchte einen Standardwert für eine Eigenschaft einer Klasse (String, benutzerdefinierte Klasse, etc) –

Antwort

9

Setzen Sie einfach den "Standard" -Wert in Ihrem Konstruktor.

public class Person 
{ 
    public Person() 
    { 
     this.FirstName = string.Empty; 
    } 

    public string FirstName { get; set; } 
} 

Auch sie heißen automatische Eigenschaften.

+0

FWIW, ein Standardwert ist ineffizient if Sie ändern zufällig den Wert in einem Ihrer Konstruktoren. In der Firma, für die ich arbeite, betrachten wir es tatsächlich als einen "Code-Geruch", einen Standardwert zu haben, denn dann müssen wir gehen und sehen, ob es in irgendeinem der Konstruktoren überschrieben wird. –

+0

danke David, wird dies im Hinterkopf behalten –

2

Meine Präferenz wäre, Dinge "die alte Art" zu tun, anstatt init im Konstruktor. Wenn Sie später einen anderen Konstruktor hinzufügen, müssen Sie sicher sein, dass Sie den ersten Konstruktor aufrufen, oder Ihre Eigenschaften werden nicht initialisiert.

+1

Sicher, aber einen der Konstruktoren von allen anderen zu nennen, ist normalerweise das, was man sowieso tun sollte. Es ist ein hübsches Standardmuster: Die Konstruktoren mit weniger Parametern übergeben die Standardwerte an den Konstruktor mit den meisten Parametern. –

0

[DefaultValue ("MyFirstName")] public string Vorname {get; einstellen; }

+0

Funktioniert nicht, aber es sollte wirklich gemacht werden. – Simon

Verwandte Themen