2008-10-15 16 views
7

Jak mogę konfiguracja domyślna wartość do właściwości zdefiniowane następująco:Jak ustawić wartość domyślną za pomocą właściwości "krótkiego stylu" w VS2008 (Właściwości automatyczne)?

public int MyProperty { get; set; } 

w VS2008 (fragment kodu), który jest za pomocą "prop" [TAB] [TAB].

Czy to możliwe bez upadku z powrotem w „starym stylu” ?:

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

Dzięki za poświęcony czas. Pozdrawiamy.

+0

Na marginesie, nie trzeba ustawić właściwość do normalnej wartości domyślnej (jak int i = 0). Dzieje się to automatycznie po utworzeniu klasy. –

+0

cóż, wybrałem int, ponieważ było to pierwsze, co przyszło mi do głowy ... ale chcę ustawić domyślną wartość właściwości dowolnej klasy (ciąg, niestandardowa klasa, itp.) –

Odpowiedz

9

Wystarczy ustawić "domyślną" wartość w swoim konstruktorze.

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

    public string FirstName { get; set; } 
} 

Ponadto nazywane są one właściwościami automatycznymi.

+0

FWIW, ustawienie wartości domyślnej jest nieefektywne, jeśli możesz zmienić wartość w dowolnym z twoich konstruktorów. W firmie, dla której pracuję, uważamy, że jest to "zapach kodu", który ma wartość domyślną, ponieważ wtedy musimy sprawdzić, czy jest ona nadpisana w dowolnym z konstruktorów. –

+0

dziękuję Davidzie, będzie to miało na uwadze –

2

Moim preferencją byłoby robienie rzeczy "w starym stylu", zamiast inicjowania w konstruktorze. Jeśli później dodasz innego konstruktora, musisz najpierw zadzwonić do niego, bo inaczej twoje właściwości będą niezainicjowane.

+1

Oczywiście, ale dzwonienie do jednego z konstruktorów od wszystkich innych jest zwykle tym, co i tak powinno być robione. Jest to dość standardowy wzorzec: Konstruktory z mniejszą liczbą parametrów przekazują wartości domyślne do konstruktora o największej liczbie parametrów. –

0

[DefaultValue ("MyFirstName")] public string FirstName {get; zestaw; }

+0

Nie działa, ale naprawdę należy do niego. – Simon

Powiązane problemy