Wątek przeniesiony 2015-11-30 23:16 z C# i .NET przez somekind.

"get; set;" - po co?

0

Witam. Przeczytałem kilka poradników na temat tych dwóch instrukcji i za cholerę nie mogę zrozumieć czemu ma to służyć. Po co mówić kompilatorowi, że jeżeli odwołamy się do tej wartości to ta wartość jest zwracana? Czy tak nie jest domyślnie? Jeżeli coś źle zrozumiałem, proszę mi to wytłumaczyć. Pozdrawiam.

1

Ja uważam to za błąd projektowy C#, i ogólniej .NETa.

Twórcy C# zmarnowali okazję, by pozbyć się podziału na pola (field) i właściwości (property).
Powinno być tak (ale nie jest), że taki zapis w klasie:

int x { get; set; }

znaczyłby to samo co

int x;
0
Jeremi napisał(a):

Witam. Przeczytałem kilka poradników na temat tych dwóch instrukcji i za cholerę nie mogę zrozumieć czemu ma to służyć. Po co mówić kompilatorowi, że jeżeli odwołamy się do tej wartości to ta wartość jest zwracana? Czy tak nie jest domyślnie? Jeżeli coś źle zrozumiałem, proszę mi to wytłumaczyć. Pozdrawiam.

Bo ani get ani set nie musi być pusty, może robić coś jeszcze (chociaż to zła praktyka wrzucać logikę do get). Mając get i set wykrywasz moment, gdy wartość się zmienia oraz z jakiej na jaką i możesz coś z tym zrobić.
A czemu jest pusty get, set no cóż po to żeby to było właściwością a nie polem. Możesz np później w klasie dziedziczonej zaimplementować get i set.

0

Nie no... słuchajcie. Gettery i settery są bardzo przydatne, bo nie muszę pisać tych głupich metod typu public string getName() { return this._name; } etc... tylko mam gettera i od razu mam dostęp do własności z domyślnie zdefiniowanym returnem albo settera z domyślnie zdefiniowanym ustawieniem obiektu navalue.

A jak chcę sobie przedefiniować domyślne wartości to zawsze przecież mogę to zrobić tak jakbym pisał zwykłą funkcję. Wg mnie bardzo wygodny i fajny pomysł.

2

Oprócz tego co napisali poprzednicy

0
Świetny Samiec napisał(a):
Jeremi napisał(a):

Witam. Przeczytałem kilka poradników na temat tych dwóch instrukcji i za cholerę nie mogę zrozumieć czemu ma to służyć. Po co mówić kompilatorowi, że jeżeli odwołamy się do tej wartości to ta wartość jest zwracana? Czy tak nie jest domyślnie? Jeżeli coś źle zrozumiałem, proszę mi to wytłumaczyć. Pozdrawiam.

Bo ani get ani set nie musi być pusty, może robić coś jeszcze (chociaż to zła praktyka wrzucać logikę do get). Mając get i set wykrywasz moment, gdy wartość się zmienia oraz z jakiej na jaką i możesz coś z tym zrobić.
A czemu jest pusty get, set no cóż po to żeby to było właściwością a nie polem. Możesz np później w klasie dziedziczonej zaimplementować get i set.

@Świetny Samiec

Tak wiem, że może robić coś jeszcze, ale zastanawiałem się nad sensem tego zapisu:

int zmienna {get; set;}

0

@Michał Bodziony

Chodzi o int zmienna { get; set; }

1 użytkowników online, w tym zalogowanych: 0, gości: 1