Τύποι δεδομένων σε C#: Double, Integer, Float, Χαρ

⚡ Έξυπνη Σύνοψη

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

  • 🔢 Ακέραιοι τύποι: Η λέξη-κλειδί Int32 (int) αποθηκεύει ακέραιους αριθμούς όπως 10, 20 ή 30 εντός ενός καθορισμένου εύρους μνήμης.
  • 🔣 Τύποι κινητής υποδιαστολής: Το double και το float διατηρούν δεκαδικές τιμές, ενώ το δεκαδικό προσφέρει μεγαλύτερη ακρίβεια για οικονομικούς υπολογισμούς.
  • ☑️ Λογικός τύπος: Η λέξη-κλειδί Boolean αποθηκεύει μόνο true ή false και ενεργοποιεί τη λογική υπό όρους.
  • 🔤 Τύποι κειμένου: Το char περιέχει έναν μόνο χαρακτήρα και το string αποθηκεύει μια ακολουθία χαρακτήρων ως κείμενο.
  • 🧩 Τιμή έναντι αναφοράς: Οι τύποι τιμών αποθηκεύουν δεδομένα απευθείας, ενώ οι τύποι αναφοράς, όπως η συμβολοσειρά, αποθηκεύουν μια διεύθυνση μνήμης.
  • 🤖 Βοήθεια AI: Τα GitHub Copilot και ML.NET φέρνουν προτάσεις κώδικα και μηχανική μάθηση στον χειρισμό τύπων C#.

Τύποι δεδομένων σε C#

Τι είναι οι τύποι δεδομένων στο C#;

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

1) Ακέραιος

Ένας ακέραιος τύπος δεδομένων χρησιμοποιούνται για εργασία με αριθμούς. Σε αυτήν την περίπτωση, οι αριθμοί είναι ακέραιοι αριθμοί όπως το 10, το 20 ή το 30. Στη C#, ο τύπος δεδομένων συμβολίζεται με το Λέξη-κλειδί Int32. Παρακάτω είναι ένα παράδειγμα για το πώς μπορεί να χρησιμοποιηθεί αυτός ο τύπος δεδομένων. Στο παράδειγμά μας, θα ορίσουμε μια μεταβλητή Int32 που ονομάζεται num. Στη συνέχεια, θα εκχωρήσουμε μια τιμή Integer στη μεταβλητή και στη συνέχεια θα την εμφανίσουμε ανάλογα.

Ακέραιοι τύποι δεδομένων σε C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Program
 { 
  static void Main(string[] args) 
  {
   Int32 num=30;
   Console.Write(num);  
   
   Console.ReadKey();
  }
 }
}

Code Εξήγηση:-

  1. Ο τύπος δεδομένων Int32 καθορίζεται για να δηλώσει μια μεταβλητή Integer που ονομάζεται num. Στη συνέχεια, στη μεταβλητή εκχωρείται μια τιμή 30.
  2. Τέλος, η συνάρτηση console.write χρησιμοποιείται για την εμφάνιση του αριθμού στην κονσόλα.

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

Παραγωγή:

Ακέραιοι τύποι δεδομένων σε C#

Από την έξοδο, μπορείτε να δείτε καθαρά ότι η μεταβλητή Integer που ονομάζεται num εμφανίστηκε στην κονσόλα

2) Double

Ένας διπλός τύπος δεδομένων χρησιμοποιείται για εργασία με δεκαδικούς. Σε αυτήν την περίπτωση, οι αριθμοί είναι ακέραιοι αριθμοί όπως 10.11, 20.22 ή 30.33. Στη C#, ο τύπος δεδομένων υποδηλώνεται με τη λέξη-κλειδί "Double". Παρακάτω είναι ένα παράδειγμα αυτού του τύπου δεδομένων.

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

Double Τύποι δεδομένων σε C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Program
 { 
  static void Main(string[] args) 
  {
   double num=30.33;
   Console.Write(num); 
   
   Console.ReadKey();
  }
 }
}

Code Εξήγηση:-

  1. Ο διπλός τύπος δεδομένων καθορίζεται για να δηλώσει διπλό τύπο μεταβλητή που ονομάζεται αρ. Στη συνέχεια, στη μεταβλητή εκχωρείται μια τιμή 30.33.
  2. Τέλος, η συνάρτηση console.write χρησιμοποιείται για την εμφάνιση του αριθμού στην κονσόλα.

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

Παραγωγή:

Double Τύποι δεδομένων σε C#

Από την έξοδο, μπορείτε να δείτε καθαρά ότι η διπλή μεταβλητή που ονομάζεται num εμφανίστηκε στην κονσόλα

3) Boolean

Ένας τύπος δεδομένων boolean χρησιμοποιείται για εργασία με Boolean τιμές του σωστό και λάθος. Στην C#, ο τύπος δεδομένων υποδηλώνεται με τη λέξη-κλειδί Boolean. Παρακάτω είναι ένα παράδειγμα αυτού του τύπου δεδομένων που μπορεί να χρησιμοποιηθεί.

Στο παράδειγμά μας, θα ορίσουμε μια Boolean μεταβλητή που ονομάζεται 'status'. Στη συνέχεια, θα εκχωρήσουμε μια δυαδική τιμή στη μεταβλητή και στη συνέχεια θα την εμφανίσουμε ανάλογα.

Τύποι δεδομένων Boolean σε C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Program
  { 
   static void Main(string[] args) 
   {
    Boolean status=true;
    Console.Write(status);
    
    Console.ReadKey();
   }
  }
}

Code Εξήγηση:-

  1. Ο τύπος δεδομένων Boolean καθορίζεται για να δηλώσει μια Boolean μεταβλητή που ονομάζεται 'status'. Στη συνέχεια, στη μεταβλητή εκχωρείται η τιμή true/false.
  2. Τέλος, η συνάρτηση console.write χρησιμοποιείται για την εμφάνιση της Boolean τιμής στην κονσόλα.

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

Παραγωγή:

Τύποι δεδομένων Boolean σε C#

Από την έξοδο, μπορείτε να δείτε καθαρά ότι η μεταβλητή Boolean που ισούται με true εμφανίστηκε στην κονσόλα

4) Χορδή

Ένας τύπος δεδομένων συμβολοσειράς χρησιμοποιείται για εργασία με τιμές συμβολοσειράς. Στη C#, ο τύπος δεδομένων υποδηλώνεται με τη λέξη-κλειδί «String». Παρακάτω είναι ένα παράδειγμα αυτού του τύπου δεδομένων.

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

Τύποι δεδομένων συμβολοσειράς σε C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class program
 {
  static void Main(string[] args)
  {
   String message="Hello";
   Console.Write(message);
   
   Console.ReadKey();
  }
 }
}

Code Εξήγηση:-

  1. Ο τύπος δεδομένων συμβολοσειράς καθορίζεται για να δηλώσει μια μεταβλητή συμβολοσειράς που ονομάζεται μήνυμα. Στη συνέχεια, στη μεταβλητή εκχωρείται η τιμή "Hello".
  2. Τέλος, η συνάρτηση console.write χρησιμοποιείται για την εμφάνιση της τιμής συμβολοσειράς στην κονσόλα.

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

Παραγωγή:

Τύποι δεδομένων συμβολοσειράς σε C#

Από την έξοδο, μπορείτε να δείτε καθαρά ότι η μεταβλητή String που ονομάζεται μήνυμα εμφανίστηκε στην κονσόλα

Πλήρης λίστα τύπων δεδομένων C#

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

Τύπος δεδομένων Μέγεθος Εύρος / Descriptιόν
byte 1 byte από 0 έως 255
μικρός 2 bytes -32,768 να 32,767
ακέραιος (Int32) 4 bytes -2,147,483,648 να 2,147,483,647
μακρύς 8 bytes Πολύ μεγάλοι ακέραιοι αριθμοί (±9.2 πεντάκις εκατομμύρια)
φλοτέρ 4 bytes Δεκαδικοί αριθμοί με ακρίβεια περίπου 6–7 ψηφίων
διπλασιαστεί 8 bytes Δεκαδικοί αριθμοί με ακρίβεια περίπου 15–16 ψηφίων
δεκαδικός 16 bytes Δεκαδικά ψηφία υψηλής ακρίβειας (28–29 ψηφία) για χρήματα
δεξαμενή 2 bytes Ένας μόνο χαρακτήρας Unicode
μπουλ 1 byte σωστό ή λάθος

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

Τύποι τιμών έναντι τύπων αναφοράς σε C#

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

  • Τύποι τιμών: Αυτά αποθηκεύουν τα πραγματικά δεδομένα απευθείας, συνήθως στη στοίβα. int, double, bool, char, απαρίθμησηκαι struct είναι τύποι τιμών. Η ανάθεση μιας μεταβλητής σε μια άλλη αντιγράφει την τιμή, έτσι ώστε οι δύο μεταβλητές να παραμένουν ανεξάρτητες.
  • Τύποι αναφοράς: Αυτά αποθηκεύουν μια αναφορά (μια διεύθυνση μνήμης) που δείχνει σε δεδομένα στο σωρό. Οι συμβολοσειρές (string), τα αντικείμενα (object), οι πίνακες (arrays) και οι στιγμιότυπες κλάσης είναι τύποι αναφοράς. Η αντιγραφή μιας μεταβλητής αναφοράς αντιγράφει μόνο τη διεύθυνση, επομένως και οι δύο μεταβλητές μοιράζονται το ίδιο αντικείμενο.

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

Μετατροπή τύπων σε C#

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

  • Έμμεση μετατροπή: Ο μεταγλωττιστής μετατρέπει αυτόματα όταν δεν υπάρχει κίνδυνος απώλειας δεδομένων, όπως η ανάθεση ενός ακέραιου αριθμού σε έναν διπλό αριθμό. Δεν απαιτείται ειδική σύνταξη.
  • Άμεση μετατροπή (casting): Τοποθετείτε τον τύπο στόχου σε παρενθέσεις, για παράδειγμα (int)myDoubleΗ μετατροπή ενός διπλού σε ακέραιο αριθμό μπορεί να προκαλέσει απώλεια δεδομένων — η μετατροπή ενός αριθμού διπλού σε ακέραιο αριθμό αφαιρεί το δεκαδικό μέρος — επομένως αποδέχεστε το ρίσκο σκόπιμα.
  • Βοηθητικές μέθοδοι: Η κλάση Convert (Convert.ToInt32) και η μέθοδος Parse κάθε τύπου (int.Parse) μετατρέπουν τις συμβολοσειρές σε αριθμούς, ενώ το ToString μετατρέπει τις τιμές ξανά σε αναγνώσιμο κείμενο.

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

Συχνές Ερωτήσεις

Οι αριθμοί float, double και decimal αποθηκεύουν δεκαδικούς αριθμούς, αλλά διαφέρουν ως προς την ακρίβεια και το μέγεθος. Η float χρησιμοποιεί 4 byte με περίπου 7 ψηφία, η double χρησιμοποιεί 8 byte με περίπου 15 ψηφία και η decimal χρησιμοποιεί 16 byte για οικονομικές τιμές υψηλής ακρίβειας.

Δεν υπάρχει πραγματική διαφορά. Το int είναι ένα ψευδώνυμο C# για τον τύπο .NET System.Int32, επομένως οι συναρτήσεις int και Int32 μεταγλωττίζονται ακριβώς στο ίδιο πράγμα. Οι περισσότεροι προγραμματιστές γράφουν int για συντομία, ενώ το Int32 κάνει τον υποκείμενο τύπο πλαισίου σαφή.

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

Ένας τύπος nullable επιτρέπει σε έναν τύπο τιμής όπως int ή bool να διατηρεί επίσης την τιμή null, γραμμένη με ένα ερωτηματικό στο τέλος, για παράδειγμα int?. Είναι χρήσιμος για προαιρετικά πεδία δεδομένων και βάσης δεδομένων, όπου μια τιμή που λείπει πρέπει να αναπαρίσταται ξεχωριστά από μηδέν ή false.

Ένας χαρακτήρας (char) περιέχει ακριβώς έναν χαρακτήρα Unicode και χρησιμοποιεί μονά εισαγωγικά, όπως το 'A'. Μια συμβολοσειρά (string) περιέχει μια ακολουθία μηδενός ή περισσότερων χαρακτήρων και χρησιμοποιεί διπλά εισαγωγικά. Ένας χαρακτήρας (char) είναι ένας τύπος τιμής, ενώ μια συμβολοσειρά (string) είναι ένας τύπος αναφοράς.

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

Ναι. Το GitHub Copilot προτείνει δηλώσεις τύπων, μετατροπές και τυποποιημένα πρότυπα μέσα στο Visual Studio και Visual Studio CodeΜπορεί να προτείνει έναν κατάλληλο αριθμητικό τύπο ή να δημιουργήσει κώδικα ανάλυσης, αλλά θα πρέπει να ελέγξετε την έξοδό του, καθώς οι προτάσεις ενδέχεται να μην εντοπίσουν προβλήματα ακρίβειας ή υπερχείλισης.

Ναι. Το ML.NET αντιστοιχίζει τύπους δεδομένων C# για να μοντελοποιήσει χαρακτηριστικά, χρησιμοποιώντας αριθμητικούς τύπους όπως float και double για την εκπαίδευση δεδομένων και string για κείμενο. Οι ισχυρά τυποποιημένες κλάσεις δεδομένων περιγράφουν κάθε στήλη, έτσι ώστε τα μοντέλα μηχανικής μάθησης να ενσωματώνονται φυσικά σε εφαρμογές C#.

Συνοψίστε αυτήν την ανάρτηση με: