View Full Version : Εισαγωγή στη γλώσσα C#
circular
19-10-2004, 17:03
Όπως είχα υποσχεθεί πριν λίγο καιρό εδώ (http://www.pctechnology.gr/vbull/vb/showpost.php?p=19981&postcount=46) επανέρχομαι με μια μικρή εισαγωγή στη γλώσσα προγραμματισμού C#. Όπως έλεγα και σε κείνο το thread πρόκειται για μια αντικειμενοστραφή γλώσσα υψηλού επιπέδου που μοιάζει πολύ στην C++ και την Java. Σχεδιάστηκε από τη Micro$oft με σκοπό να αποτελέσει τη νέα γλώσσα στην οποία θα αναπτύσσονται όλες οι εφαρμογές της στο μέλλον και δημιουργήθηκε ώστε να αποτελέσει την κύρια γλώσσα ανάπτυξης εφαρμογών για την πλατφόρμα .ΝΕΤ.
Ο ο compiler της παράγει μια ενδιάμεση μορφή κώδικα (MSIL - MicroSoft Intermediate Language) η οποία δεν είναι γλώσσα μηχανής αλλά κάτι αντίστοιχο με το bytecode της Java, και την πρώτη φορά που εκτελείται η εφαρμογή μετατρέπεται σε γλώσα μηχανής βελτιστοποιημένη για τον εκάστοτε επεξεργαστή (όπως αντίστοιχα στη Java το Virtual Machine αναλαμβάνει το interpretation των class αρχείων). Περισσότερες πληροφορίες για αυτό το κοινό Common Language Infrastructure υπάρχουν στο http://www.ecma-international.org/publications/standards/Ecma-335.htm . Παράλληλα στο .ΝΕΤ Framework που είναι οι βιβλιοθήκες του .ΝΕΤ υπάρχει μια πληθώρα κλάσεων για κάθε δουλειά που είναι πολύ καλά οργανωμένες σε χώρους ονομάτων (namespaces), έτσι ώστε με λίγη διαίσθηση να βρίσκεις την κλάση που σου χρειάζεται.
Τέλος, ουσιαστικά η C# ορίζει ένα πρότυπο (ECMA (http://www.ecma-international.org/publications/standards/Ecma-334.htm)) το οποίο είναι δημόσιο, οπότε ο καθένας μπορεί να κάνει δική του υλοποίηση ενός compiler για τη γλώσσα και παρόλο που όπως ήταν αναμενόμενο η ίδια η Μ$ έφτιαξε υλοποίηση τελευταία έχουν κάνει την εμφάνιση τους υλοποιήσεις για Linux και άλλα λειτουργικά (π.χ. Mono Project).
Για την ανάπτυξη εφαρμογών σε C# μπορεί να χρησιμοποιηθεί είτε το Visual Studio .NET της ίδιας της Microsoft είτε διάφορα ελεύθερα διαθέσιμα εργαλεία. Ένας πολύ καλός (και δωρεάν!) συνδυασμός είναι το MS .NET Framework SDK 1.1 (http://www.microsoft.com/downloads/details.aspx?familyid=9b3a2ca6-3647-4070-9f41-a333c6b9181d&displaylang=en) που περιέχει τους compilers, code samples & documentation, μαζί με το SharpDevelop (SharpDevelop Download (http://www.icsharpcode.com/OpenSource/SD/Download/) ), ένα open source IDE που μοιάζει πολύ με το Visual Studio.
Η άλλη λύση αν θέλει να φτιάξει κάποιος εφαρμογές στη γλώσσα C# χρησιμοποιώντας Linux είναι το Mono Framework (http://www.mono-project.com/downloads/index.html) , το οποίο είναι μια open source υλοποίηση όλου του .NET framework για Linux.
Οι εφαρμογές που θα παρουσιαστούν παρακάτω έχουν δοκιμαστεί τόσο στο Visual Studio .NET όσο και στο SharpDevelop, τόσο σε Windows όσο και σε SuSE Linux 9.0 με το Mono 1.0.2, εκτός αν αναφέρεται κάτι διαφορετικό.
circular
19-10-2004, 17:28
Οι εφαρμογές στη C# ονομάζονται assemblies και ουσιαστικά πρόκειται για αρχεία που περιέχουν μεταδεδομένα (metadata) που περιγράφουν τις κλάσεις που χρησιμοποιούνται στην εφαρμογή. Η πιο απλή εφαρμογή που μπορεί να γραφτεί στη γλώσσα αυτή είναι η τυπική HelloWorld
class HelloWorld
{
static void Main()
{
System.Console.WriteLine("Hello PcTechnology!!");
}
}
Για τη μεταγλώττιση του παραπάνω κώδικα αν υποθέσουμε οτι είναι σε ένα αρχείο με όνομα HelloWorld.cs δίνουμε την εντολή
csc HelloWorld.cs
ενώ για να εκτελεστεί στα Windows δίνουμε την εντολή
HelloWorld
και στο Linux την εντολή
mono HelloWorld.exe
Σε λίγο θα ακολουθήσουν και πιο προχωρημένα κομμάτια κώδικα πχ κλάσεις, γραφικά κλπ. Αν σας ενδιαφέρει stay tuned, ενώ αν συναντήσετε δυσκολίες μέχρι αυτό το σημείο απλά κάντε ποστ ή στείλτε μου pm.
DarthMoul
19-10-2004, 18:51
Circular, μετά από πολλά χρόνια με έβαλες στο τρυπάκι να ασχολειθώ με προϊόντα της Micro$oft. Τώρα κατεβάζω τα sources του mono για να κάνω compilation στον alpha γιατί έχει μόνο x86 precompiled και αρχίζω τις δοκιμές.
circular
19-10-2004, 20:57
Circular, μετά από πολλά χρόνια με έβαλες στο τρυπάκι να ασχολειθώ με προϊόντα της Micro$oft. Τώρα κατεβάζω τα sources του mono για να κάνω compilation στον alpha γιατί έχει μόνο x86 precompiled και αρχίζω τις δοκιμές.
χαχα! και γω ο μόνος λόγος που έχω windows στο pc είναι για να κάνω development στη C#, όλα τα υπόλοιπα τα κανω και στο linuxaki mou , αλλα δυστυχως το mono δεν ειναι ακόμα πλήρες (αν και προχωρά με πολυ ταχεις ρυθμους!!!), οποτε δεν μπορώ να ολοκληρώσω την πτυχιακή μου στο mono.
Καθώς είναι προφανές οτι είσαι προγραμματιστής με εξαιρετική εμπειρία και γνώσεις εύχομαι να μη με βρίζεις μετά (εξάλλου εγώ είμαι μόλις 23 και ασχολούμαι με προγραμματισμό μόνο τα 5 τελευταία) :059:
MrSeanKon
19-10-2004, 21:03
Κωστα ξερεις για μενα απο που προερχομαι φυσικα.........
Και πως ξεκινησα πριν 13 χρονια σε περιβαλλοντα Unix κλπ και μολις πριν εναμισο μηνα αρχισα να προγραμματιζω σε Windows περιβαλλοντα για το χομπυ μου κυριως........
Ομως βλεποντας το δημοφιλες προγραμμα Hello world ομολογω οτι ειναι καπως στρυφνος ο κωδικας!
Νεο look κι εμφανιση με ξενισε λιγακι η C#...... :101:
Τι στο καλο βλεπω WriteLine Pascal μου θυμισε....... :004:
Παντως σε Benches που εκανα στον Borland C++ MSDOS κωδικα vs Windows οι χρονοι ελαττωθηκαν 12 - 20% βεβαια ο χρηστης δεν προκειται να καταλαβει καν τη διαφορα αυτη γιατι εξαγει αμεσως τα αποτελεσματα.
Οσο για βελτιστοποιηση του compiler μου για Α64 θα ηθελα 1000 χρονια ζωης + απειρες γνωσεις και φυσικα δεν εχω τετοιο βιτσιο.
Παντως θα ηθελα να μας δειξεις περισσοτερα δειγματα κωδικα και να μας πεις πως μπορουμε να κανουμε πιο φακιρικα κολπα θυμησου οτι ειχες πει οτι με 10 γραμμες κωδικα εχεις προγραμμα να σου δειχνει την ταχυτητα του επεξεργαστη.... :040:
circular
19-10-2004, 21:09
Κοίτα, και γω αγριεύομαι όταν βλέπω το avatar σου, αλλα δεν λεω τιποτα! Μολις κάνω μερικά πιο αναλυτικά posts σχετικά με τη δομή και τη λειτουργία της είμαι σίγουρος πως θα αναρωτηθείς μήπως ασχολείσαι άδικα με τη Borland!
DarthMoul
19-10-2004, 21:12
Τα sources του mono, δεν είναι linux alpha ready. Το compilation πάει σφαίρα, αλλά στο install το mint διαμαρτύρεται για non-atomic behaviour από κάποια *.exe. Porting in progress by DarthMoul. Επανέρχομαι.
circular
19-10-2004, 21:29
χμμμ, Darthmoul υπάρχει μόνο έτοιμο Power PC Port at http://www.mono-project.com/contributing/ppc.html.
DarthMoul
19-10-2004, 21:48
χμμμ, Darthmoul υπάρχει μόνο έτοιμο Power PC Port at http://www.mono-project.com/contributing/ppc.html. Τα sources που κοίταξα υποστηρίζουν ppc, sparc, parisc, s390 mainframe της IBM, arm, αλλά όχι alpha :102:
Το mono θεωρεί τους long long = 64 bits int, αλλά στον alpha ο long long είναι 128 bits, οπότε την πατήσαμε...Θέλει alpha assembly σε αρκετά σημεία. Να κοιτάξω για DotGNU;
circular
19-10-2004, 22:12
Το DotGNU δυστυχώς υπολείπεται αρκετά, είναι σε πολύ αρχικο στάδιο. Μπορείς να το δοκιμάσεις αλλά φοβάμαι οτι θα απογοητευτείς - εγώ τουλάχιστον απογοητεύτηκα όταν το δοκίμασα πριν απο κανα τρίμηνο (λίγο προτού βγει το Mono 1.0).
DarthMoul
19-10-2004, 22:46
Το DotGNU δυστυχώς υπολείπεται αρκετά, είναι σε πολύ αρχικο στάδιο. Μπορείς να το δοκιμάσεις αλλά φοβάμαι οτι θα απογοητευτείς - εγώ τουλάχιστον απογοητεύτηκα όταν το δοκίμασα πριν απο κανα τρίμηνο (λίγο προτού βγει το Mono 1.0). Το έστησα και έκανα και import τα mono classes και register στον kernel για να τρέχει τα προγράμμτα χωρίς να χρειαζεται να φωνάζω κάθε φορά τον interpreter.
DarthMoul
19-10-2004, 23:05
Λοιπόν, το DotGNU δούλεψε μια χαρούλα με το παραδειγμά σου:
alpha:~/test# cscc -o hello.exe hello.cs
alpha:~/test# ilrun hello.exe
Hello PcTechnology!!
alpha:~/test#
Αφού έχω κάνει import και τα classes του mono, λογικά δεν θα έχω πρόβλημα, τουλάχιστον στην αρχή.
circular
19-10-2004, 23:28
Μπράβο Darthmoul, ήμουν σίγουρος ότι θα τα καταφέρεις. Για τα απλά προγραμματάκια είναι μια χαρά το DotGNU, αλλά δυστυχώς δεν έχει υλοποιήσεις για πολλές κλάσεις του .ΝΕΤ, οπότε δύσκολα θα φτιάξεις πιο πολύπλοκα - η μαλλον πιο χρήσιμα - προγράμματα.
DarthMoul
19-10-2004, 23:56
Μπράβο Darthmoul, ήμουν σίγουρος ότι θα τα καταφέρεις. Για τα απλά προγραμματάκια είναι μια χαρά το DotGNU, αλλά δυστυχώς δεν έχει υλοποιήσεις για πολλές κλάσεις του .ΝΕΤ, οπότε δύσκολα θα φτιάξεις πιο πολύπλοκα - η μαλλον πιο χρήσιμα - προγράμματα.Δεν μπορούμε να κάνουμε import τις κλάσεις του .NET στο DotGNU όπως κάναμε και αυτές του mono; Τα tests και τα examples του mono πάντως τρέξανε μια χαρά στο DotGNU μετά το import.
circular
20-10-2004, 00:16
Ναι, φυσικά και μπορείς. Απλά δεν έχει γίνει η υλοποίηση των κλάσεων - τα namespaces περιέχουν μόνο τους ορισμούς σε πολλές περιπτώσεις. συγκεκριμένα "In the 38 namespaces
we are missing:
207 constructors, 2180 methods, 309 fields, 1300 properties, and 296 events."
Δες το http://www.dotgnu.org/pnetlib-status/
DarthMoul
20-10-2004, 00:24
Ναι, φυσικά και μπορείς. Απλά δεν έχει γίνει η υλοποίηση των κλάσεων - τα namespaces περιέχουν μόνο τους ορισμούς σε πολλές περιπτώσεις. συγκεκριμένα "In the 38 namespaces
we are missing:
207 constructors, 2180 methods, 309 fields, 1300 properties, and 296 events."
Δες το http://www.dotgnu.org/pnetlib-status/Κατάλαβα. Είναι σαν να έχεις τα function prototypes μέσα σε header file αλλά λείπει η βιβλιοθήκη, μιλώντας με όρους C. Πάντως απ'ότι είδα το DotGNU κάνει όλη την υλοποίηση σε C, σε αντίθεση με το mono που κάνει το μεγαλύτερο μέρος σε C#. Θα πρέπει να έχουν μεγάλη διαφορά στην ταχύτητα.
circular
20-10-2004, 00:39
Αυτό ακριβώς - υπάρχουν μόνο τα definitions, σαν να ήταν prototypes σε headers. Πολύ πιθανό να έχουν όντως μεγάλη διαφορά στην ταχύτητα, η αλήθεια είναι οτι δεν έκανα κανένα benchmark, ήμουν απλά χαρούμενος που μπορούσα να τρέχω τις εφαρμογές μου σε κάθε πλατφόρμα χωρίς να χρειάζεται compilation εκ νέου.
DarthMoul
20-10-2004, 00:47
Αυτό ακριβώς - υπάρχουν μόνο τα definitions, σαν να ήταν prototypes σε headers. Πολύ πιθανό να έχουν όντως μεγάλη διαφορά στην ταχύτητα, η αλήθεια είναι οτι δεν έκανα κανένα benchmark, ήμουν απλά χαρούμενος που μπορούσα να τρέχω τις εφαρμογές μου σε κάθε πλατφόρμα χωρίς να χρειάζεται compilation εκ νέου.Επειδή ο interpreter του DotGNU τρέχει σωστά στον alpha, αν κοροϊδέψω λιγάκι το mono να τον χρησιμοποιήσει, ίσως καταφέρω να το κάνω install. Μετά θα τρέξω τα tests να δω αν δουλεύει σωστά.
Φτιάξε κανένα bench να κάνουμε δοκιμές σε pc. Αν πιάσει το hack που σου γράφω παραπάνω, θα έχουμε mono με ταχύτητες DotGNU. Θα συνδιάσουμε τα καλύτερα χαρακτηριστικά και από τα δύο.
DarthMoul
21-10-2004, 07:55
Τελικά το trick δεν δούλεψε. Το ilrun δεν υποστηρίζει όλες τις παραμέτρους του mint. Την πατήσαμε. Θα δουλέψουμε με ότι έχουμε. Circular περιμένω να συνεχίσεις το μάθημα.
circular
22-10-2004, 00:30
OK λοιπόν, μη βιάζεστε, θα το πάω σιγά σιγά αλλά σύντομα θα δείξω και προχωρημένα παραδείγματα. Προς το παρόν λίγη θεωρία που θα χρειαστεί για τη συνέχεια:
Δύο από τις βασικότερες διαφορές της C# που την κάνουν να μοιάζει περισσότερο με την Java είναι:
1) ότι δεν επιτρέπεται η δήλωση μεθόδων και μεταβλητών "χύμα", όλες οι δηλώσεις πρέπει να βρίσκονται μέσα σε μια δήλωση μια κλάσης (ή τάξης, όπως προτιμάτε). Δηλαδή δεν επιτρέπεται να δηλώνονται global μέθοδοι και μεταβλητές όπως πχ στην C / C++.
2) οι κλάσεις οργανώνονται σε χώρους ονομάτων (namespaces) και γίνονται προσβάσιμες χρησιμοποιώντας την εντολή using, που είναι αντίστοιχη της import στη Java. Η πρόσβαση σε υποχώρους ονομάτων γίνεται με τη χρήση της τελείας (.) Έτσι για να χρησιμοποιήσουμε την κλάση System.Console (η οποία χρησιμεύει για να γράφουμε και αν διαβάζουμε από το stdin / stdout) έχουμε 2 επιλογές. Η πρώτη είναι να γράψουμε όλο το μονοπάτι των namespaces μέχρι να φτάσουμε σε αυτό που περιέχει τη μέθοδο που μας ενδιαφέρει (στην περίπτωσή μας είναι το System.Console), όπως στην εντολή
system.Console.WriteLine("Hello PcTechnology!");
Επειδή αυτό μπορεί να γίνει εκνευριστικό όταν θέλουμε να φτάσουμε βαθιά σε μια ιεραρχία κλάσεων μπορεί να χρησιμοποιηθεί η εντολή using η οποία το μόνο που κάνει είναι να εισάγει τον χώρο ονομάτων που ακολουθεί τη λέξη using έτσι ώστε να μπορούμε να χρησιμοπιήσουμε απευθείας την επιθυμητή κλάση χωρίς να γράφουμε κάθε φορά το μονοπάτι. Το πρώτο λοιπόν πρόγραμμα θα μπορούσε να γραφτεί ως
using System; // εισάγει το χώρο ονομάτων System
class HelloWorld
{
static void Main()
{
Console.WriteLine("Hello PcTechnology!!!"); // δε χρειάζεται να γράψουμε System.Console
}
}
DarthMoul
26-10-2004, 07:51
Δάσκαλε, μπορώ να δηλώσω και περισσότερα από ένα namespaces με την using;
Η δήλωση επιδρά μόνο στον κώδικα που είναι μετά από αυτήν, ή έχει global επίδραση;
Και κάτι ακόμα. Μπορώ να φτιάξω και δικά μου namespaces;
circular
26-10-2004, 12:35
Δάσκαλε, μπορώ να δηλώσω και περισσότερα από ένα namespaces με την using;
Η δήλωση επιδρά μόνο στον κώδικα που είναι μετά από αυτήν, ή έχει global επίδραση;
Και κάτι ακόμα. Μπορώ να φτιάξω και δικά μου namespaces;
DarthMoul, τα namespaces έχουν την ίδια λογική με τα import directives της Java, αν μια κλάση που φτιάχνεις χρειάζεται αν χρησιμοποιήσει πολλά τότε απλά βάζεις τόσα using όσα χρειάζεται στην κορυφή του αρχείου και έχει τοπική εμβέλεια. Επίσης ο σκοπός της χρήσης των namespaces είναι να μπορείς και συν να οργανώνεις τις κλάσεις σου σε ιεραρχίες, οπότε μπορείς να δηλώσεις όσα namespaces θες. Για παράδειγμα, έστω ότι θέλουμε να φτιάξουμε μια βιβλιοθήκη κλάσεων (ένα dll) και να το χρησιμοποιήσουμε από μια απλή κονσολάδικη εφαρμογή. (Με την ευκαιρία θα δείξω πως κάνουμε compile σε dlls και πως χρησιμοποιούμε dlls από άλλες εφαρμογές ή βιβλιοθήκες):
Έστω ότι θέλουμε να φτιάξουμε μια βιβλιοθήκη για μιγαδικούς αριθμούς, που θα λέγεται Complex.dll. To Complex.cs θα περιέχει τα παρακάτω:
using System;
namespace ComplexLibrary
{
public class Complex
{
//private members
private float real;
private float imag;
//public properties
public float Real
{
get { return real; }
set { real = value;}
}
public float Imag
{
get { return imag; }
set { imag = value;}
}
//constructors
public Complex()
{
real = 0F;
imag = 0F;
}
public Complex(float real, float imag)
{
this.real = real;
this.imag = imag;
}
//operators ...
public override string ToString()
{
string retVal = real.ToString();
if(imag > 0F)
{
retVal = retVal + "+";
}
retVal = retVal + imag.ToString() + "i";
return retVal;
}
}
}
Για να γίνει η μεταγλώττιση σε βιβλιοθήκη δίνουμε την παρακάτω εντολή
csc /t:library Complex.cs, που παράγει την βιβλιοθήκη Complex.dll.
Τώρα είναι η ώρα να γράψουμε την εφαρμογή που θα χρησιμοποιεί τη βιβλιοθήκη που μόλις φτιάξαμε. Στο αρχείο ComplexTest.cs λοιπόν βάζουμε τα παρακάτω:
using System;
using ComplexLibrary;
namespace ComplexTest
{
public class MainClass
{
static void Main()
{
Complex c = new Complex(1.3F, 2.75F);
Console.WriteLine(c.ToString());
}
}
}
και κάνουμε τη μεταγλώττιση ως εξής:
csc ComplexTest.cs /reference:Complex.dll
Το αποτέλεσμα της εκτέλεσης είναι 1,3+2,75i
Προσέξτε τις εξής λεπτομέρειες:
Αν στο ComplexTest.cs δεν υπήρχε η γραμμή using ComplexLibrary τότε η μέθοδος Main θα έπρεπε να λεει
ComplexLibrary.Complex c = new ComplexLibrary.Complex(1.3F, 2.75F)
Δηλαδή εισάγοντας το δικό μας namespace γλιτώσαμε αρκετή πληκτρολόγηση. Κατ'αυτόν τον τρόπο μπορούμε να φτιάξουμε σύνθετες ιεραρχίες από namespaces που μπορούν να περιέχονται στο ίδιο assembly. Συνισταται δε κάθε εκτελέσιμο να ορίζει το δικό του namespace για ευκολότερη οργάνωση και διαχείριση του κώδικα.
Αυτά προς το παρόν! Σειρά στο επόμενο μάθημα έχει η κληρονομικότητα, καθώς παρουσιάζει κάποιες ιδιαιτερότητες στη C# σε σχέση με τις C++ / Java.
circular
22-03-2005, 19:14
SeanKon η C# ΔΕΝ ειναι μονο για προγραμματισμό σε Windows. Όλα τα παραδείγματα που δίνω τα δοκιμάζω σε 3 υλοποιήσεις της γλώσσας: Windows με MS .NET Framework 1.1 (σύντομα θα βγει και το 2.0, θα παω σε μια παρουσιαση την αλλη βδομαδα), και σε Windows & Linux με το Mono. Η διαφορά λοιπόν είναι οτι δεν εξαρτώμαι από μια μόνο πλατφόρμα όυτε για τη μεταγλώττιση κα ιτις δοκιμές ούτε για το περιβάλλον ανάπτυξης. Για να καταλάβεις μπορώ να φτιάξω φόρμες τόσο με τα εργαλεία της Microsoft (namespace: Microsoft.Windows.Forms) όσο και με τo GTK# που δουλεύει με τον ίδιο τρόπο και στα 2 λειτουργικά (προς το παρόν δεν έχει υλοποιηθεί όλο το Microsoft.Windows.Forms για το Mono). Επίσης αυτό το thread όπως λέει και ο τίτλος του είναι εισαγωγικός και έχει ως σκοπο να χρησιμευσει ως μια πρώτη επαφη με τη γλώσσα την οποία πολύ λίγος κόσμος ξέρει, σε αντίθεση με την C όπου πολύς κόσμος έχει εμπειρία. Όταν τελειώσω με τα εισαγωγικά θα ξεκινήσω ένα άλλο thread με πιο προχωρημένα θέματα και παράλληλα θα μπορούσες εσύ να ξεκινήσεις ένα αντίστοιχο για τη C όπου μετά από συνεννόηση να κάνουμε ποστ πάνω στα ίδια θέματα ώστε να γίνεται η σύγκριση. Ελπίζω ότι από το νέο μήνα θα μπορέσω να επανέρθω με νέα μαθηματάκια για τη γλώσσα τα οποία έχω στο μυαλό μου εδώ και καιρό.
MrSeanKon
19-05-2005, 22:05
H μεταβαση μου απο τη Βοrland C++ Builder στη C# ηταν λιγο αποτομη αρχικα και με ξυνισε....
Βεβαια με λιγη προσπαθεια αρχισα να εξοικιωνομαι με το περιβαλλον το οποιο ειναι παραπλησιο με αυτο που ειχα μαθει....
Να πω καποιες διαφορες της C# (οσες μου ηρθανε στο μυαλο):
1) Δεν υπαρχει η main αλλα Main γραφεται.
2) ΓΙΟΚ pointers (σκασιλα μου).
3) ΓΙΟΚ #include κλπ....
4) ΓΙΟΚ η κλασσικη βιβλιοθηκη της ANSI C (printf, scanf, fopen, strncmp κλπ κλπ) --> υπαρχουν αλλες ρουτινες στα αντιστοιχα namespaces.
5) ΓΙΟΚ Μαθηματικες ρουτινες βαζουμε το Math.Cos(x) κλπ...
6) Tα try, catch (τα μαθαινω Δασκαλε σιγα-σιγα) ειναι διαφορετικα π.χ. δεν παιζει το catch(...) της C++ σε C#...
7) Η Μain δεν μπορει να καλεσει τη Main (αυτο παιζει στη C στην C++ δεν ξερω LOL κι ουτε με νοιαζει πλεον LOL).
8) ΓΙΟΚ εξωτερικες μεταβλητες...
Παντως οπως λενε κι οι περισσοτεροι συγγραφεις βιβλιων η γνωση της C ειναι προβλημα (καπως) για να μαθεις C++ ειτε C#...
Eιδικα με την τελευταια μια κι ειχα μεινει στο MSDOS LOL θα σου αφησει κακες συνηθειες...
Παμε παρακατω:
Κωστα εχουμε μιλησει και στο MSN αλλα και τηλεφωνικα περι των VisualStyles.
Καταρχας αυτα ενω πρεπει να φορτωνονται θυμασαι τι ***** παιζει με εκεινες τις αποριες που σου ειχα στειλει.
Διαβαζοντας τις οδηγιες δοκιμασα (ειχα βαλει στη Μain την Application.EnabledVisualStyles() ) και μετα σε μια procedure πριν εξαγει ενα μυνημα η MessageBox.Show εβαλα την Application.DoEvents();
Το περιεργο ειναι οτι με αυτη την εντολη εμφανισε Visual Styles το MessageBox ομως πατωντας ενα κουμπι εξηχθη exception και φορτωθηκε ο debugger κι εγινε της Miko Lee... :097:
Τεσπα υπαρχουν κι αλλοι δρομοι γιαυτο κι αλλαξα το interface....
Oπως καταλαβαινεις ειμαι πολυ ψειρας σε κατι τετοια.
Eνδιαφέρον το thread σου circular. :109:
Aυτό που έχω να προσθέσω είναι ότι η ταχύτητα μεταγλώττισης (compilation) είναι ασύγκριτα γρήγορη στη C# με άλλα περιβάλλοντα (βλέπε Borland). :099:
Θα περιμένουμε νεώτερά σου posts circular!
vBulletin® v3.8.6, Copyright ©2000-2012, Jelsoft Enterprises Ltd.