2339 Stimmen

Was ist der beste Weg, um eine C# Auto-Eigenschaft einen Anfangswert zu geben?

Wie gibt man einer C#-Auto-Eigenschaft einen Anfangswert?

Entweder verwende ich den Konstruktor, oder ich greife auf die alte Syntax zurück.

Verwendung des Konstruktors:

class Person 
{
    public Person()
    {
        Name = "Initial Name";
    }
    public string Name { get; set; }
}

Verwendung der normalen Eigenschaftssyntax (mit einem Anfangswert)

private string name = "Initial Name";
public string Name 
{
    get 
    {
        return name;
    }
    set
    {
        name = value;
    }
}

Gibt es einen besseren Weg?

0voto

Nag Punkte 125
class Person 
{    
    /// Gets/sets a value indicating whether auto 
    /// save of review layer is enabled or not
    [System.ComponentModel.DefaultValue(true)] 
    public bool AutoSaveReviewLayer { get; set; }
}

32 Stimmen

Willkommen bei Stack Overflow! Nur damit Sie wissen, dass das Wiederaufgreifen einer alten Frage wie dieser im Allgemeinen verpönt ist, es sei denn, Sie haben gute neue Informationen. In diesem Fall haben jedoch mehrere andere bereits über das DefaultValue-Attribut geschrieben. Wenn jemand anderes bereits gepostet hat, was Sie sagen wollten, ist es angemessener, ihn hochzustufen, indem Sie auf den Pfeil nach oben über der Zahl neben seiner Antwort klicken.

11 Stimmen

@feuer: Für einen Kommentar sind 50 Rufpunkte erforderlich. Abstimmen erfordert auch Ansehen, IIRC.

-1voto

Jesse Adam Punkte 397

Ich weiß, dies ist eine alte Frage, aber es kam, wenn ich auf der Suche nach, wie man einen Standardwert haben, die mit der Option zu überschreiben vererbt wird, kam ich mit

//base class
public class Car
{
    public virtual string FuelUnits
    {
        get { return "gasoline in gallons"; }
        protected set { }
    }
}
//derived
public class Tesla : Car
{
    public override string FuelUnits => "ampere hour";
}

8 Stimmen

Achtung: Es wird kein Anfangswert gesetzt, sondern ein Accessor erstellt, der eine konstante Zeichenkette zurückgibt. Wenn der Wert von FuelUnits auf eine andere Zeichenkette gesetzt wird, ignoriert FuelUnits diesen Wert und gibt weiterhin die in get definierte Zeichenkette zurück.

-4voto

user3076134 Punkte 19

Ich denke, das würde reichen, wenn man SomeFlag den Standardwert false gibt.

private bool _SomeFlagSet = false;
public bool SomeFlag
{
    get
    {
        if (!_SomeFlagSet)
            SomeFlag = false;        

        return SomeFlag;
    }
    set
    {
        if (!_SomeFlagSet)
            _SomeFlagSet = true;

        SomeFlag = value;        
    }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X