2010-09-09 10 views
8

Ten zawsze mnie zastanawiał, ale domyślam się, że istnieje bardzo rozsądne wyjaśnienie, dlaczego tak się dzieje.Dlaczego możesz mieć przecinek na końcu inicjalizatora kolekcji?

Po uruchomieniu inicjalizatora kolekcji kompilator zezwala na przecinek końcowy, np.

new Dictionary<string, string> 
{ 
    { "Foo", "Bar "}, 
}; 

i

new List<string> 
{ 
    "Foo", 
}; 

Ktoś wie dlaczego tak spływu przecinek jest dozwolona przez kompilator?

Odpowiedz

4

Jest to wygoda programisty, ponieważ programista może po prostu skopiować i wkleić ostatni wiersz, aby rozszerzyć listę. C# /. NET jest dobry jak ten :)

8

Prawdopodobnie głównie do narzędzi takich jak generatory kodu, gdzie jest to ogromnie wygodne nie musiał wiedzieć, czy jest to pierwsza lub ostatnia pozycja. Prawdopodobnie nie powinno to być czynnikiem decydującym, ale (po napisaniu takich narzędzi) jestem mu za to wdzięczny.

3

Domyślam z dwóch powodów:

  1. Byłoby dodatkowa praca, aby mieć kompilator rozpoznać i leczyć ostatnią linię inaczej niż inni.
  2. Jest rzeczywiście przydatny, aby mieć przecinek końcowy, ponieważ pozwala on na ułożenie linii bez powodowania niepotrzebnych błędów kompilacji.
1

Kiedy to zmienić:


    new List<string> 
    { 
     "Foo", 
    }; 

do:


    new List<string> 
    { 
     "Foo", 
     "Bar", 
    }; 

Diff-Tools zaprezentuje tylko dodatkową linię. np. podczas sprawdzania kodu wystarczy sprawdzić nową linię.

Powiązane problemy