private readonly int _something = 12; powyższe vs przypisanie wartości w konstruktorze. Są między tym jakieś praktyczne różnice? Jeśli nie, to jak przyjęło się to robić?
@Goglez taki zapis trochę bez sensu, najlepiej zrobić to const. W readonly zwykle używasz do a) wartości dynamicznych (w zależności np. od argumentów konstruktora) b) typów danych, które nie mogą być const.
@Yahoo_: @WielkiElektronig: Taki zapis może mieć znaczenie, jeżeli something miałoby mieć domyślną wartość, która może zostać nadpisana przez konstruktor. Na przykład w klasie, która posiada kilka konstruktorów albo w konstruktorze, który posiada jakąś logikę. Wtedy something początkowo ma wartość 12, którą można zmienić na inną.
@Goglez: To tylko zapis, w rzeczywistości ta wartość zostanie nadana zmiennej dopiero w konstruktorze, więc to nie ma żadnego znaczenia.
@Priya: no jeśli tak to pewnie i tak bym to załatwił domyślną wartością konstruktora, żebym nie musiał zastanawiać się skąd ta wartość wzięła. Zresztą pisałem, że readonly właśnie w takich przypadkach ma sens
public Foo(int something = 12) { _something = something;}
Czy w polskim interesie nie byłoby lepsze żeby podpisać pakt z Rosją o nieagresji i zaatakować Ukrainę od jej zachodu. Granice polsko rosyjskie umieścić w okolicy Kijowa. Przecież Ukraińcy mają #!$%@? na swoją ojczyznę, w końcu to twór, liczy się tylko dolar. #wojna #ukraina
private readonly int _something = 12;powyższe vs przypisanie wartości w konstruktorze. Są między tym jakieś praktyczne różnice? Jeśli nie, to jak przyjęło się to robić?
#naukaprogramowania #csharp
a) wartości dynamicznych (w zależności np. od argumentów konstruktora)
b) typów danych, które nie mogą być const.
Przez konstruktor ustawiasz, kiedy wartość musi pochodzi zewnętrznego, z punktu odpowiedzialności docelowej klasy, miejsca.
@Goglez: To tylko zapis, w rzeczywistości ta wartość zostanie nadana zmiennej dopiero w konstruktorze, więc to nie ma żadnego znaczenia.
public Foo(int something = 12) { _something = something;}public Foo(int someOtherInteger) {}public Foo(int something = 12) {} // blad
public Foo(int someOtherInteger, int something=12) {}( ͡° ͜ʖ ͡°)