C# COMPLETE COURSE

image description

ΕΝΟΤΗΤΑ 16 - STATIC CLASS MEMBERS

INTRODUCTION

Σε αυτό το δωρεάν μάθημα C# θα εξικοιωθούμε με την έννοια του static, θα δούμε πως ορίζουμε static class members μέσα σε κλάσεις, ποια είναι η χρησιμότητα τους και ποιες είναι οι διαφορές τους από τα instance fields και τέλος πως τις καλούμε στο κώδικα μας μέσα από ένα πρακτικό παράδειγμα.

STATIC FIELD DEFINITION

Τα static fields είναι και αυτά μεταβλητές που ορίζουμε μέσα σε μια κλάση με την διαφορά ότι δεν ανήκουν σε κανένα αντικείμενο που δημιουργούμε αλλά ανήκουν στην ίδια την κλάση. Αυτό πρακτικά σημαίνει ότι όλα τα αντικείμενα έχουν πρόσβαση στην ίδια ακριβώς μεταβλητή και μπορούν να διαβάσουν ή και να αναθέσουν καινούργια τιμή σε αυτήν. Αυτό είναι εφικτό γιατί οι static μεταβλητές δεν αποθηκεύονται μαζί με το αντικείμενο στη heap memory αλλά αποθηκεύονται μαζί με την κλάση.

Η ιδιότητα τους, όπως ήδη αναφέραμε, είναι ότι οι static μεταβλητές είναι κοινές για όλα τα αντικείμενα. Αυτή την ιδιότητα τους την αποκτούν οι μεταβλητές όταν μπροστά από τον ορισμό του ονόματός τους δηλώσουμε την λέξη κλειδί static. Πρακτικά αυτό σημαίνει ότι μια static μεταβλητή ορίζεται και ενεργοποιείται μόνο μια φορά (την πρώτη φορά που θα εκτελεστεί ο κώδικα μας), ενώ οι instance μεταβλητές δημιουργούνται και αρχικοποιούνται κάθε φορά που δημιουργούμε ένα καινούργιο αντικείμενο.

Μια ακόμη σημαντική διαφορά από τις instance μεταβλητές είναι ο τρόπος με τον οποίο τις καλούμε μέσα στο κώδικα μας. Ενώ για να καλέσουμε τα instance fields πρέπει πρώτα να δημιουργήσουμε ένα αντικείμενο, με τα static fields απλά γράφουμε το όνομα της κλάσης, τελεία, και το όνομα του static field που θέλουμε να διαβάσουμε ή να αναθέσουμε καινούργια τιμή.

Πριν δούμε ένα πρακτικό παράδειγμα, ας βάλουμε όλες τις διαφορές που υπάρχουν ανάμεσα στα static fields και στα instance fields σε ένα πίνακα για να μπορείτε γρήγορα να αναφερθείτε σε αυτό.

Δωρεάν Μαθήματα C#

USING STATIC FIELDS IN A PRACTICAL EXAMPLE

Συνεχίζοντας στο ίδιο παράδειγμα που είχαμε δημιουργήσει στα προηγούμενα δωρεάν μαθήματα C#, εξετάζουμε την κλάση με το όνομα Product. Συγκεκριμένη κλάση έχουμε μόνο instance fields. Ας προσθέσουμε και ένα static field στην κλάση με το όνομα totalNoProducts η οποία θα περιέχει τον συνολικό αριθμών των προιόντων.

Product.cs

Όπως ήδη έχουμε αναφέρει, για να αποκτήσουμε πρόσβαση στην static μεταβλητή χρησιμοποιούμε το όνομα της κλάση, τελεία, και μετά το όνομα του static field. Αυτό που θέλουμε να κάνουμε τώρα είναι κάθε φορά που δημιουργούμε ένα καινούργιο αντικείμενο, δηλαδή κάθε φορά που δημιουργούμε ένα καινούργιο product, να αυξάνουμε την τιμή του totalNoProducts κατά ένα. Για να το πετύχουμε αυτό γράφουμε τον κώδικα Product.totalNoProducts++ αμέσως μετά την δημιουργία κάθε αντικειμένου. Η αρχική τιμή του totalNoProducts είναι 0 γιατί το data type είναι int. Αμέσως μετά την δημιουργία του πρώτου αντικειμένου (product1) η τιμή του totalNoProducts θα γίνει 1 και μετά την δημιουργία του δευτερότου αντικειμένου (product2) θα γίνει 2. Για να διαβάσουμε την τιμή του totalNoProducts γράφουμε τον κώδικα Product.totalNoProducts μέσα σε στη Writeline μέθοδο. Ολόκληρος ο κώδικας του Program.cs είναι ο εξής:

Program.cs

Output

Δωρεάν Μαθήματα C#

Πριν κλείσουμε το σημερινό δωρεάν μάθημα C#, θα ήθελα να αναφερθώ στο γεγονός ότι τα αντικείμενα δεν έχουν πρόσβαση στις static μεταβλητές. Μόνο με το όνομα της κλάσης έχετε πρόσβαση στις static μεταβλητές γιατί πολύ απλά δεν ανήκουν σε αντικείμενα αλλά στις κλάσεις. Αν προσπαθήσετε να αποκτήσετε πρόσβαση σε μια static μεταβλητή μέσω ενός αντικειμένου θα λάβετε λάθος από τον compiler.

Δωρεάν Μαθήματα C#

ΕΙΣΗΓΗΤΗΣ

Merry Jhonson

Μιχάλης Κασάπογλου

Ο Μιχάλης Κασάπογλου, είναι ένας από τους πιο έμπειρους τεχνικούς εκπαιδευτές στον χώρο του προγραμματισμού με πάνω από 20 χρόνια εμπειρία. Έχει εργαστεί σαν IT Operations Manager, Senior Programmer, και Training Team Leader ενώ κατέχει και αρκετές πιστοποιήσεις που καλύπτουν ένα μεγάλο φάσμα τεχνολογιών στο προγραμματισμό, σε βάσεις δεδομένων και cloud. Στον ελεύθερο του χρόνο διατηρεί ένα τεχνολογικό blog στο οποίο θα βρείτε αρκετά δωρεάν μαθήματα προγραμματισμού για αρχάριους.

loader