2009-08-13 9 views
1

Ist es möglich, mit den automatischen Eigenschaften von C# eine neue Instanz eines Objekts zu erstellen?Wie Sie eine neue Instanz eines Objekts in C# zurückgeben. Automatische Eigenschaften

in C# Ich liebe, wie ich das tun kann:

public string ShortProp {get; set;} 

ist es möglich, dies für Objekte wie List zu tun, die zuerst instanziiert werden müssen?

dh:

List<string> LongProp = new List<string>(); 
public List<string> LongProp { 
    get { 
     return LongProp ; 
    } 
    set { 
     LongProp = value; 
    } 
} 

Antwort

8

Sie können Ihre Unterstützung Feld auf den Konstruktor initialisieren:

public class MyClass { 
    public List<object> ClinicalStartDates {get; set;} 
    ... 
    public MyClass() { 
     ClinicalStartDates = new List<object>(); 
    } 
} 

Aber ... sind Sie sicher, mit einem öffentlichen Setter diese Liste eine Eigenschaft zu machen? Ich weiß nicht, Ihren Code, aber vielleicht sollten Sie weniger Ihre Klassen Eigenschaften aussetzen:

public class MyClass { 
    public List<object> ClinicalStartDates {get; private set;} 
    ... 
    public MyClass() { 
     ClinicalStartDates = new List<object>(); 
    } 
} 
+0

@Downvoter: irgendwelche Vorschläge, wie man die Antwort verbessert? Was magst du nicht daran? –

1

Sie haben es in den Konstruktor zu initialisieren:

class MyClass { 

    public MyClass() { 
    ShortProp = "Some string"; 
    } 

    public String ShortProp { get; set; } 

} 
0

Ich will nie eine Variable in der Klasse defination erklären. Mach es im Konstruktor.

Wenn Sie dieser Logik folgen, können Sie Ihren ShortProp im Konstruktor Ihrer Klasse einbinden.

0

Der einzige Weg, wie Sie dies tun können, ist im Konstruktor.


public List<ClinicalStartDate> ClinicalStartDates { get; set; } 

public ObjCtor() 
{ 
    ClinicalStartDates = new List<ClinicalStartDate>; 
} 

Das ist wahrscheinlich nicht das, was Sie aber hören wollte.

0

C# 3.5 nicht automatische Initialisierung der automatischen Eigenschaften unterstützt.
Also ja, Sie sollten einen Konstruktor verwenden.
Und Ihre Frage ist ein duplicate.

+0

C# 6.0 wird diese Funktion haben. – nawfal

Verwandte Themen