Εισαγωγή στην C#/.NET μέρος 2ο
Δημοσιεύθηκε από Κώστας Αναγνώστου στο Ιανουαρίου 9, 2009
Το άρθρο αυτό είναι μια εισαγωγή στην C# για άτομα που δεν την έχουν χρησιμοποιήσει ξανά.
Η C# (προφέρεται σι σαρπ) είναι η γλώσσα επιλογής για ανάπτυξη .ΝΕΤ εφαρμογών. Εν αντιθέσει με την Visual Basic που προσαρμόστηκε για να υποστηρίζει το .ΝΕΤ, η C# έχει σχεδιαστεί εξαρχής με γνώμονα την πλατφόρμα αυτή και συνεπώς μπορεί να την αξιοποιήσει καλύτερα.
H C# είναι μια αντικειμενοστραφής γλώσσα προγραμματισμού που δανείζεται στοιχεία από την C++ και την Java. O μεταγλωττιστής της γλώσσας παράγει ένα ενδιάμεσο κώδικα, ανάλογα με τον object code της Java, την Microsoft Intermediate Language. Κατά την εκτέλεση της εφαρμογής, το Common Language Runtime, το περιβάλλον δηλαδή μέσα στο οποίο θα τρέξει το πρόγραμμα, διαβάζει τον ενδιάμεσο κώδικα (MSIL) και τον μεταγλωττίζει σε κώδικα Windows.
Για να δούμε πρακτικά πως είναι ο κώδικας μιας C# εφαρμογής τρέχουμε το Visual C# 2008 Express Edition, και δημιουργούμε ένα νέο project.

Στην συνέχεια επιλέγουμε σαν Project Type το Visual C#, στην συνέχεια ως template το Console Application και ονομάζουμε την εφαρμογή μας TestApplication, και πατάμε το OK.

Ουσιαστικά με τον τρόπο αυτό καθοδηγήσαμε το Visual Studio να φτιάξει το σκελετό μιας C# εφαρμογής που θα τρέχει σε DOS παράθυρο (console), με απλό κείμενο χωρίς γραφικά.
Το Visual Studio θα δημιουργήσει ένα Solution με το όνομα TestApplication και ένα Project με το ίδιο όνομα.

Κάνοντας διπλό κλικ στο αρχείο Program.c εμφανίζεται ο σκελετός του προγράμματος:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace TestApplication
{
class Program
{
static void Main(string[] args)
{
}
}
}
Πολλά από τα χαρακτηριστικά ενός C# προγράμματος εμφανίζονται ήδη. Οι δηλώσεις using στην αρχή του προγράμματος καθορίζουν ποιες βιβλιοθήκες θα χρησιμοποιήσουμε στην εφαρμογή. Το namespace ορίζει ένα «χώρο» μέσα στο οποίο θα δημιουργούνται οι μεταβλητές στο πρόγραμμα. Είναι για καθαρά ονοματολογικούς σκοπούς και επιτρέπει το διαχωρισμό 2 μεταβλητών με το ίδιο όνομα που κάθε μια ανήκει σε διαφορετικές βιβλιοθήκες. Μπορεί να το δει κανείς σαν το όνομα ενός καταλόγου (folder) στο δίσκο. Δύο αρχεία με το ίδιο όνομα μπορούν να υπάρχουν σε δυο διαφορετικούς καταλόγους. Για να κάνω αναφορά σε κάποιο από τα δύο χρησιμοποιώ και το όνομα του καταλόγου. Το ίδιο ακριβώς συμβαίνει και με το namespace.
Το βασικό πρόγραμμα είναι μια κλάση (class), με το όνομα Program. Στην C# όλος ο κώδικας της εφαρμογής πρέπει να είναι μέρος μιας κλάσης, εν αντιθέσει με την C++ που επιτρέπει δημιουργία κώδικα και εκτός κλάσης.
Τέλος η συνάρτηση-μέλος της κλάσης Program, η Main, είναι το σημείο εισόδου της εφαρμογής, ανάλογα με την main() της C++. Τα ονόματα της κλάσης του προγράμματος (Program) και της συνάρτησης εισόδου (Main) είναι προκαθορισμένα και δεν μπορούν να αλλάξουν.
Πατώντας το πλήκτρο F5, η εφαρμογή μεταγλωττίζεται και τρέχει. Πολύ γρήγορα θα δούμε ένα παράθυρο κονσόλας να ανοίγει και να κλείνει. Αυτό γίνεται γιατί ουσιαστικά το πρόγραμμα δεν εκτελεί καμία ενέργεια (η Main είναι άδεια).
Αλλάζουμε το κώδικα της Main λίγο ώστε να βγάλει κάποια έξοδο στο παράθυρο της κονσόλας, το παραδοσιακό “Hello World!”:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace TestApplication
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
Console.ReadLine();
return;
}
}
}
Εδώ κάνουμε χρήση μιας βιβλιοθήκης του .ΝΕΤ, της System, χρησιμοποιώντας το αντικείμενο της Console. To αντικείμενο αυτό διαχειρίζεται είσοδο-έξοδο στο παράθυρο της κονσόλας. Υποστηρίζονται πολλά τέτοια αντικείμενα στο .ΝΕΤ, που υλοποιούν ένα πλήθος λειτουργιών. Χρησιμοποιούμε τη συνάρτηση WriteLine() για να απεικονίσουμε μια γραμμή κειμένου και την ReadLine() για να διαβάσουμε μια γραμμή κειμένου – στην περίπτωση μας το πλήκτρο ENTER. Στο τέλος της συνάρτησης, η εντολή return σηματοδοτεί την λήξη της. Στην συγκεκριμένη περίπτωση είναι περιτή η χρήση της μιας και η Main δεν επιστρέφει τίποτα.
Παρατηρούμε επίσης ότι κάθε εντολή στην C#, όπως και στην C++ πρέπει να τερματίζεται με το ελληνικό ερωτηματικό.
Πατώντας πάλι το F5 ανοίγει το παράθυρο, και απεικονίζεται η γραμμή κειμένου «Hello World!». Για να κλείσει το παράθυρο πρέπει να πατήσουμε Enter.
Ενημερωτικά, ο Intermediate Language κώδικας που παράγεται για την συνάρτηση Main είναι ο εξής:
.method private hidebysig static void Main(string[] args) cil managed
{
.entrypoint
// Code size 19 (0x13)
.maxstack 8
IL_0000: nop
IL_0001: ldstr "Hello World!"
IL_0006: call void [mscorlib]System.Console::WriteLine(string)
IL_000b: nop
IL_000c: call string [mscorlib]System.Console::ReadLine()
IL_0011: pop
IL_0012: ret
} // end of method Program::Main
Είναι σχετικά εύκολο να καταλάβει κανείς την λειτουργία του, συγκρίνοντας τον με τον αρχικό κώδικα της συνάρτησης Main (C#). Είναι για παράδειγμα εμφανές ότι φορτώνει το κείμενο «Hello World!» σε μια προσωρινή μεταβλητή (εντολή IL_001) και στην συνέχεια καλεί την συνάρτηση WriteLine για να την τυπώσει την οθόνη. Επίσης γίνεται φανερό ότι η βιβλιοθήκη System με το αντικείμενο της Console ανήκουν στο .ΝΕΤ και δεν αποτελούν μέρος της C#.
Στο επόμενο άρθρο θα συνεχίσουμε την εισαγωγή στην C#.
