Customize Consent Preferences

We use cookies to help you navigate efficiently and perform certain functions. You will find detailed information about all cookies under each consent category below.

The cookies that are categorized as "Necessary" are stored on your browser as they are essential for enabling the basic functionalities of the site. ... 

Always Active

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

No cookies to display.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

No cookies to display.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

No cookies to display.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

No cookies to display.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

No cookies to display.

2.3 Μετατροπή Τύπων (Type Casting) στην γλώσσα C#

Η μετατροπή τύπων (Type Casting) στη γλώσσα C# αναφέρεται στη διαδικασία μετατροπής ενός τύπου δεδομένων σε έναν άλλο τύπο. Οι τρεις βασικές μορφές μετατροπής τύπων είναι η αυτόματη μετατροπή, η χειροκίνητη μετατροπή και η μετατροπή μεταξύ αναφορικών τύπων.

Η αυτόματη μετατροπή (implicit casting) συμβαίνει αυτόματα όταν υπάρχει συμβατότητα μεταξύ δύο τύπων δεδομένων. Για παράδειγμα, μπορεί να γίνει αυτόματη μετατροπή από έναν μικρότερο ακέραιο τύπο σε έναν μεγαλύτερο.

Η χειροκίνητη μετατροπή (explicit casting) γίνεται όταν χρειάζεται να μετατραπεί ένας τύπος δεδομένων σε έναν άλλο τύπο που δεν υπάρχει αυτόματη συμβατότητα. Αυτό γίνεται με τη χρήση του τελεστή cast “(type)”. Για παράδειγμα, μπορούμε να μετατρέψουμε έναν αριθμό μεταξύ ακέραιων και δεκαδικών τύπων.

Η μετατροπή μεταξύ αναφορικών τύπων (reference type casting) αφορά τη μετατροπή αντικειμένων από έναν τύπο σε έναν άλλο τύπο που είναι συνδεδε

μένος με την ιεραρχία κλάσεων ή την υλοποίηση διεπαφών. Αυτή η μετατροπή μπορεί να γίνει με τη χρήση του τελεστή cast “(type)” ή τη χρήση της λέξης-κλειδιού “as”.

Η μετατροπή τύπων στη γλώσσα προγραμματισμού C# αναφέρεται στην αλλαγή της τιμής μιας μεταβλητής από έναν τύπο δεδομένων σε έναν άλλο τύπο. Στη C#, υπάρχουν δύο τύποι μετατροπής:

  1. Αυτόματη μετατροπή (προαιρετική): Αφορά τη μετατροπή ενός μικρότερου τύπου σε έναν μεγαλύτερο τύπο μεγέθους. Για παράδειγμα, μπορείτε να αναθέσετε μια τιμή τύπου “char” σε μια μεταβλητή τύπου “int”, η οποία θα γίνει αυτόματα χωρίς ειδική δήλωση. Οι τύποι μετατροπής που χρησιμοποιούνται σε αυτήν τη διαδικασία είναι “char -> int -> long -> float -> double”.
  2. Προαιρετική μετατροπή (χειροκίνητη): Αφορά τη μετατροπή ενός μεγαλύτερου τύπου σε έναν μικρότερο τύπο μεγέθους. Σε αυτήν την περίπτωση, πρέπει να γίνει χειροκίνητα με τη χρήση του τελεστή μετατροπής (cast operator). Για παράδειγμα, μπορείτε να μετατρέψετε μια τιμή τύπου “double” σε μια μεταβλητή τύπου “int” με τη χρήση του τελεστή “(int)”.

Συνοψίζοντας, η αυτόματη μετατροπή γίνεται αυτόματα από τον μεταγλωττιστή, ενώ η προαιρετική μετατροπή απαιτεί τη χρήση του τελεστή μετατροπής.

Η μετατροπή τύπων στη γλώσσα προγραμματισμού C# είναι σημαντικό για να εξασφαλίσετε τη σωστή αντιστοίχιση και χρήση των δεδομένων σας. Ας δούμε ορισμένα παραδείγματα για να κατανοήσουμε πώς λειτουργεί η μετατροπή τύπων:

Παράδειγμα Αυτόματης Μετατροπής:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
int myInt = 10;
long myLong = myInt; // Αυτόματη μετατροπή int σε long
Console.WriteLine(myLong); // Εκτύπωση της τιμής της μεταβλητής myLong
int myInt = 10; long myLong = myInt; // Αυτόματη μετατροπή int σε long Console.WriteLine(myLong); // Εκτύπωση της τιμής της μεταβλητής myLong
int myInt = 10;
long myLong = myInt; // Αυτόματη μετατροπή int σε long
Console.WriteLine(myLong); // Εκτύπωση της τιμής της μεταβλητής myLong

Σε αυτό το παράδειγμα, δημιουργούμε μια μεταβλητή με όνομα myInt τύπου int και της αναθέτουμε την τιμή 10. Έπειτα, δημιουργούμε μια μεταβλητή με όνομα myLong τύπου long και της αναθέτουμε την τιμή της μεταβλητής myInt. Επειδή ο τύπος long είναι μεγαλύτερου μεγέθους από τον τύπο int, η μετατροπή γίνεται αυτόματα και δεν απαιτείται επιπλέον κώδικας.

[adinserter block=”2″]

Παράδειγμα Προαιρετικής Μετατροπής:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
double myDouble = 3.14;
int myInt = (int)myDouble; // Προαιρετική μετατροπή double σε int
Console.WriteLine(myInt); // Εκτύπωση της τιμής της μεταβλητής myInt
double myDouble = 3.14; int myInt = (int)myDouble; // Προαιρετική μετατροπή double σε int Console.WriteLine(myInt); // Εκτύπωση της τιμής της μεταβλητής myInt
double myDouble = 3.14;
int myInt = (int)myDouble; // Προαιρετική μετατροπή double σε int
Console.WriteLine(myInt); // Εκτύπωση της τιμής της μεταβλητής myInt

Σε αυτό το παράδειγμα, δημιουργούμε μια μεταβλητή με όνομα myDouble τύπου double και της αναθέτουμε την τιμή 3.14. Έπειτα, δημιουργούμε μια μεταβλητή με όνομα myInt τύπου int και της αναθέτουμε την τιμή της μεταβλητής myDouble, αλλά με τη χρήση του τελεστή μετατροπής (int) για να εκτελέσουμε την προαιρετική μετατροπή από double σε int. Καθώς ο τύπος int είναι μικρότερου μεγέθους από τον τύπο double, η μετατροπή πρέπει να γίνει χειροκίνητα με τη χρήση του τελεστή μετατροπής.

Είναι σημαντικό να λαμβάνετε υπόψη τις διαφορές στο μέγεθος των τύπων δεδομένων κατά τη μετατροπή. Όταν μετατρέπετε έναν τύπο μεγαλύτερου μεγέθους σε έναν μικρότερο μεγέθους, μπορεί να προκύψει απώλεια ακρίβειας ή υπερχείλιση δεδομένων. Είναι σημαντικό να είστε προσεκτικοί και να εξασφαλίζετε ότι οι μετατροπές γίνονται με ασφαλή τρόπο, προκειμένου να αποφευχθούν προβλήματα στην εκτέλεση του προγράμματος.

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

Θυμηθείτε ότι η μετατροπή τύπων μπορεί να επηρεάσει την ακρίβεια και την απόδοση του προγράμματος. Συνεπώς, πρέπει να γίνεται με προσοχή και να εξασφαλίζετε ότι η μετατροπή γίνεται σύμφωνα με τις απαιτήσεις και τις ανάγκες του προγράμματος σας.

Οι προαιρετικές μετατροπές πρέπει να γίνονται χειροκίνητα, τοποθετώντας τον τύπο μέσα σε παρενθέσεις μπροστά από την τιμή:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
double myDouble = 3.14;
int myInt = (int)myDouble; // Προαιρετική μετατροπή double σε int
Console.WriteLine(myInt); // Εκτύπωση της τιμής της μεταβλητής myInt
double myDouble = 3.14; int myInt = (int)myDouble; // Προαιρετική μετατροπή double σε int Console.WriteLine(myInt); // Εκτύπωση της τιμής της μεταβλητής myInt
double myDouble = 3.14;
int myInt = (int)myDouble; // Προαιρετική μετατροπή double σε int
Console.WriteLine(myInt); // Εκτύπωση της τιμής της μεταβλητής myInt

Σε αυτό το παράδειγμα, δημιουργούμε μια μεταβλητή με όνομα myDouble τύπου double και της αναθέτουμε την τιμή 3.14. Έπειτα, δημιουργούμε μια μεταβλητή με όνομα myInt τύπου int και της αναθέτουμε την τιμή της μεταβλητής myDouble, αλλά με τη χρήση του τελεστή μετατροπής (int) για να εκτελέσουμε την προαιρετική μετατροπή από double σε int. Καθώς ο τύπος int είναι μικρότερου μεγέθους από τον τύπο double, η μετατροπή πρέπει να γίνει χειροκίνητα με τη χρήση του τελεστή μετατροπής.

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

Επίσης, να σημειωθεί ότι η μετατροπή μεταξύ διαφορετικών τύπων μπορεί να οδηγήσει σε απώλεια πληροφοριών ή μη αναμενόμενη συμπεριφορά, ιδίως όταν γίνεται μετατροπή από έναν πιο γενικό τύπο σε έναν πιο ειδικό. Είναι σημαντικό να γνωρίζετε τις προδιαγραφές και τους περιορισμούς του κάθε τύπου δεδομένων πριν προβείτε σε μετατροπές.

[adinserter block=”3″]

Είναι επίσης δυνατή η έκφραση της μετατροπής τύπων χρησιμοποιώντας ενσωματωμένες μεθόδους, όπως οι Convert.ToBoolean, Convert.ToDouble, Convert.ToString, Convert.ToInt32 (int) και Convert.ToInt64 (long):

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
string myString = "10";
int myInt = Convert.ToInt32(myString); // Προαιρετική μετατροπή από string σε int
Console.WriteLine(myInt); // Εκτύπωση της τιμής της μεταβλητής myInt
double myDouble = 3.14;
int myInt = Convert.ToInt32(myDouble); // Προαιρετική μετατροπή από double σε int
Console.WriteLine(myInt); // Εκτύπωση της τιμής της μεταβλητής myInt
string myString = "10"; int myInt = Convert.ToInt32(myString); // Προαιρετική μετατροπή από string σε int Console.WriteLine(myInt); // Εκτύπωση της τιμής της μεταβλητής myInt double myDouble = 3.14; int myInt = Convert.ToInt32(myDouble); // Προαιρετική μετατροπή από double σε int Console.WriteLine(myInt); // Εκτύπωση της τιμής της μεταβλητής myInt
string myString = "10";
int myInt = Convert.ToInt32(myString); // Προαιρετική μετατροπή από string σε int
Console.WriteLine(myInt); // Εκτύπωση της τιμής της μεταβλητής myInt

double myDouble = 3.14;
int myInt = Convert.ToInt32(myDouble); // Προαιρετική μετατροπή από double σε int
Console.WriteLine(myInt); // Εκτύπωση της τιμής της μεταβλητής myInt

Σε αυτά τα παραδείγματα, χρησιμοποιούμε τις μεθόδους Convert.ToInt32 και Convert.ToDouble για να μετατρέψουμε τιμές σε int και double αντίστοιχα. Αυτές οι μεθόδοι παίρνουν μια τιμή και επιστρέφουν τη μετατραπείσα τιμή στον καθορισμένο τύπο δεδομένων. Είναι σημαντικό να ληφθεί υπόψη ότι αυτές οι μεθόδοι μπορούν να προκαλέσουν εξαιρέσεις εάν η μετατροπή δεν είναι εφικτή.

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

Εδώ είναι μερικά παραδείγματα που χρησιμοποιούν μεθόδους μετατροπής τύπων:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
bool myBool = Convert.ToBoolean("True"); // Μετατροπή από string σε bool
Console.WriteLine(myBool); // Εκτύπωση της τιμής της μεταβλητής myBool
double myDouble = Convert.ToDouble("3.14"); // Μετατροπή από string σε double
Console.WriteLine(myDouble); // Εκτύπωση της τιμής της μεταβλητής myDouble
string myString = Convert.ToString(10); // Μετατροπή από int σε string
Console.WriteLine(myString); // Εκτύπωση της τιμής της μεταβλητής myString
bool myBool = Convert.ToBoolean("True"); // Μετατροπή από string σε bool Console.WriteLine(myBool); // Εκτύπωση της τιμής της μεταβλητής myBool double myDouble = Convert.ToDouble("3.14"); // Μετατροπή από string σε double Console.WriteLine(myDouble); // Εκτύπωση της τιμής της μεταβλητής myDouble string myString = Convert.ToString(10); // Μετατροπή από int σε string Console.WriteLine(myString); // Εκτύπωση της τιμής της μεταβλητής myString
bool myBool = Convert.ToBoolean("True"); // Μετατροπή από string σε bool
Console.WriteLine(myBool); // Εκτύπωση της τιμής της μεταβλητής myBool

double myDouble = Convert.ToDouble("3.14"); // Μετατροπή από string σε double
Console.WriteLine(myDouble); // Εκτύπωση της τιμής της μεταβλητής myDouble

string myString = Convert.ToString(10); // Μετατροπή από int σε string
Console.WriteLine(myString); // Εκτύπωση της τιμής της μεταβλητής myString

Στα παραπάνω παραδείγματα, χρησιμοποιούμε τη μέθοδο Convert.ToBoolean για να μετατρέψουμε ένα string σε bool, τη μέθοδο Convert.ToDouble για να μετατρέψουμε ένα string σε double και τη μέθοδο Convert.ToString για να μετατρέψουμε ένα int σε string.

Αυτές οι μεθόδοι παρέχουν μια εύκολη και ασφαλή τρόπο μετατροπής τύπων δεδομένων. Αναζητήστε την κατάλληλη μέθοδο μετατροπής για τις ανάγκες σας και χρησιμοποιήστε την ανάλογα.

21 Αυγούστου, 2023
top
error: Content is protected !!
Μετάβαση σε γραμμή εργαλείων