Δηζαγσγή ζην.νδτ Framework θαη ζηε C#

Σχετικά έγγραφα
Βάσεις Δεδομέμωμ. Εξγαζηήξην V. Τκήκα Πιεξνθνξηθήο ΑΠΘ

Constructors and Destructors in C++

Απαντήσεις θέματος 2. Παξαθάησ αθνινπζεί αλαιπηηθή επίιπζε ησλ εξσηεκάησλ.

Τεκμηπίωζη Πποηύπων Σσεδίαζηρ ηηρ UML

Σι θα δούμε σε αυτό το μάθημα;

ΗΥ-150 Πξνγξακκατησκόο Ταμηλόκεσε θαη Αλαδήτεσε

Ενδεικτικά Θέματα Στατιστικής ΙΙ

Αιγόξηζκνη Γνκή επηινγήο. Πνιιαπιή Δπηινγή Δκθωιεπκέλεο Δπηινγέο. Δηζαγωγή ζηηο Αξρέο ηεο Δπηζηήκεο ηωλ Η/Υ. introcsprinciples.wordpress.

ΡΤΘΜΙΕΙ ΔΙΚΣΤΟΤ ΣΑ WINDOWS

ΔΡΓΑΙΑ 1. Γιαδικησακά πληροθοριακά σζηήμαηα. Ομάδα Δργαζίας: Μεηαπηστιακοί Φοιηηηές. ηέθανος Κονηοβάς ΑΔΜ :283. Πάζτος Βαζίλειος ΑΔΜ :288

iii. iv. γηα ηελ νπνία ηζρύνπλ: f (1) 2 θαη

Εισαγωγικό Φροντιστήριο

Εισαγωγή στη C# και. Σημειώσεις Σεμιναρίου Επιμέλεια: Βασίλης Κόλιας. το.net 4.0

ΑΠΛΟΠΟΙΗΗ ΛΟΓΙΚΩΝ ΤΝΑΡΣΗΕΩΝ ΜΕ ΠΙΝΑΚΕ KARNAUGH

ΑΛΛΑΓΗ ΟΝΟΜΑΣΟ ΚΑΙ ΟΜΑΔΑ ΕΡΓΑΙΑ, ΚΟΙΝΟΥΡΗΣΟΙ ΦΑΚΕΛΟΙ ΚΑΙ ΕΚΣΤΠΩΣΕ ΣΑ WINDOWS XP

ΓΗΑΓΩΝΗΣΜΑ ΣΤΑ ΜΑΘΖΜΑΤΗΚΑ. Ύλη: Μιγαδικοί-Σσναρηήζεις-Παράγωγοι Θεη.-Τετν. Καη Εήηημα 1 ο :

DOM. Γηδάζθνληεο: Π. Αγγειάηνο, Γ. Εήλδξνο Δπηκέιεηα δηαθαλεηώλ: Π. Αγγειάηνο. Σρνιή Ζιεθηξνιόγωλ Μεραληθώλ θαη Μεραληθώλ Υπνινγηζηώλ

5 η Δργαζηηριακή Άζκηζη Κσκλώμαηα Γσαδικού Αθροιζηή/Αθαιρέηη

Αντικειμενοστρεφής Προγραμματισμός

ΣΕΙ Δυτικήσ Μακεδονίασ, Παράρτημα Καςτοριάσ Τμήμα Πληροφορικήσ και Τεχνολογίασ Υπολογιςτών

TOOLBOOK (μάθημα 2) Δεκηνπξγία βηβιίνπ θαη ζειίδσλ ΠΡΟΑΡΜΟΓΗ: ΒΑΛΚΑΝΙΩΣΗ ΔΗΜ. ΕΚΠΑΙΔΕΤΣΙΚΟ ΠΕ19 1 TOOLBOOK ΜΑΘΗΜΑ 2

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C#

Κευάλαιο 8 Μονοπωλιακή Συμπεριφορά- Πολλαπλή Τιμολόγηση

Τι θα δούμε σε αυτό το μάθημα;

Αντικειμενοστρεφής Προγραμματισμός

Μορθές Κακόβοσλοσ Κώδικα (Malicious Code)

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> ee.duth.

Διαφορές μεταξύ αξιών και αναφορών #1

Εισαγωγή στο.νετ Framework και στη C#

Δυναμική μνήμη με πίνακες και λίστες

8. Μέθοδοι (Methods)

ΘΔΜΑ 1 ο Μονάδες 5,10,10

Έλαο πίνακας σσμβόλων ππνζηεξίδεη δύν βαζηθέο ιεηηνπξγίεο:

Εγκατάσταση του πακέτου XAMPP. Β Τεχνική Σχολή Λεμεςοφ Σχολική χρονιά Άριςτοσ Παςιάσ

Οντοκεντρικός Προγραμματισμός

ΘΔΚΑ ΡΖΠ ΑΛΑΓΛΩΟΗΠΖΠ

Εισαγωγή στη γλώσσα Java

Παρουσίαση Delphi. Μέμος-Μπαγκράτσας Ιωάννης 1232 Μαργαρίτης Νικόλαος 1226

Εισαγωγή στη γλώσσα Java

Ζαχαρίας Μ. Κοντοπόδης Εργαστήριο Λειτουργικών Συστημάτων ΙΙ

Σειεζηέο, Δθθξάζεηο Πξνηάζεηο, Δληνιέο Διέγρνπ Ρνήο

Τίτλος Μαθήματος: Ηλεκτρονικοί Υπολογιστές IΙΙ. Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης

ΟΠΤΙΚΗ Α. ΑΝΑΚΛΑΣΖ - ΓΗΑΘΛΑΣΖ

Αντικειμενοστρεφής Προγραμματισμός

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack

Τι θα δούμε σε αυτό το μάθημα;

Γ ΣΑΞΖ ΔΝΗΑΗΟΤ ΛΤΚΔΗΟΤ ΔΞΔΣΑΕΟΜΔΝΟ ΜΑΘΖΜΑ: ΜΑΘΖΜΑΣΗΚΑ ΘΔΣΗΚΩΝ ΚΑΗ ΟΗΚΟΝΟΜΗΚΩΝ ΠΟΤΓΩΝ ΤΝΑΡΣΖΔΗ ΟΡΗΑ ΤΝΔΥΔΗΑ (έως Θ.Bolzano) ΘΔΜΑ Α

ΠΑΡΑΡΣΗΜΑ Δ. ΔΤΡΔΗ ΣΟΤ ΜΔΣΑΥΗΜΑΣΙΜΟΤ FOURIER ΓΙΑΦΟΡΩΝ ΗΜΑΣΩΝ

ΚΕΦ. 2.3 ΑΠΟΛΤΣΗ ΣΘΜΗ ΠΡΑΓΜΑΣΘΚΟΤ ΑΡΘΘΜΟΤ

Δξγαιεία Καηαζθεπέο 1 Σάμε Σ Δ.Κ.Φ.Δ. ΥΑΝΙΧΝ ΠΡΧΣΟΒΑΘΜΙΑ ΔΚΠΑΙΓΔΤΗ. ΔΝΟΣΗΣΑ 11 ε : ΦΧ ΔΡΓΑΛΔΙΑ ΚΑΣΑΚΔΤΔ. Καηαζθεπή 1: Φαθόο κε ζσιήλα.

ΑΝΩΤΑΤΟ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΚΡΗΤΗΣ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΟΛΥΜΕΣΩΝ. e-library

Οργάνωση και Δομή Παρουσιάσεων

Δξγαιεία Καηαζθεπέο 1 Σάμε Δ Δ.Κ.Φ.Δ. ΥΑΝΗΩΝ ΠΡΩΣΟΒΑΘΜΗΑ ΔΚΠΑΗΓΔΤΖ. ΔΝΟΣΖΣΑ 2 ε : ΤΛΗΚΑ ΩΜΑΣΑ ΔΡΓΑΛΔΗΑ ΚΑΣΑΚΔΤΔ. Καηαζθεπή 1: Ογθνκεηξηθό δνρείν

Διάλεξη 5: Κλάσεις και Αντικείμενα. Διδάσκων: Παναγιώτης Ανδρέου

Η επιζκόπηζη ηης έμμιζθης ενηολής ζηην Αλλοδαπή. Καηεξίλα Γαιαλνπνύινπ, Intellectual Property Manager, Microsoft Ειιάο Α.Ε.

B-Δέλδξα. Τα B-δέλδξα ρξεζηκνπνηνύληαη γηα ηε αλαπαξάζηαζε πνιύ κεγάισλ ιεμηθώλ πνπ είλαη απνζεθεπκέλα ζην δίζθν.

Μονοψϊνιο. Αγνξά κε ιίγνπο αγνξαζηέο. Δύναμη μονοψωνίος Η ηθαλόηεηα πνπ έρεη ν αγνξαζηήο λα επεξεάζεη ηελ ηηκή ηνπ αγαζνύ.

Τίτλος Μαθήματος: Ηλεκτρονικοί Υπολογιστές IΙΙ. Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης

Βάσεις Δεδομέμωμ. Δξγαζηήξην Ι. Τκήκα Πιεξνθνξηθήο ΑΠΘ

Αντικειμενοστρεφής Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES

MySQL Εργαστήριο #3 Structured Query Language - SQL

Εισαγωγή στη C# και το.net 4.0

ΔΙΑΚΡΙΤΑ ΜΑΘΗΜΑΤΙΚΑ. Αθροίσματα, Γινόμενα και Ασσμπτωτικές Εκτιμήσεις

5. Ανασκόπηση αντικειμενοστραφούς προγραμματισμού

Αζκήζεις ζτ.βιβλίοσ ζελίδας 13 14

ΣΥΣΤΗΜΑΤΑ ΑΛΓΕΒΡΑ Α ΛΥΚΕΙΟΥ. 1. Να ιπζνύλ ηα ζπζηήκαηα. 1 0,3x 0,1y x 3 3x 4y 2 4x 2y ( x 1) 6( y 1) (i) (ii)

Διδάσκων: Παναγιώτης Ανδρέου

Προγραμματισμός Ι. Πίνακες, Δείκτες, Αναφορές και Δυναμική Μνήμη. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

ACTA A.E. Αριςτο Σέλεια Πιςτοποίηςη. Ανθρώπινου Δυναμικοφ. «ΠΙΣΟΠΟΙΗΗ ΑΝΘΡΩΠΙΝΟΤ ΔΤΝΑΜΙΚΟΤ Εξελίξεισ - Προοπτικέσ»

ΠΑΝΔΛΛΑΓΗΚΔ ΔΞΔΣΑΔΗ Γ ΣΑΞΖ ΖΜΔΡΖΗΟΤ ΓΔΝΗΚΟΤ ΛΤΚΔΗΟΤ Γευηέρα 11 Ηουνίου 2018 ΔΞΔΣΑΕΟΜΔΝΟ ΜΑΘΖΜΑ: ΜΑΘΖΜΑΣΗΚΑ ΠΡΟΑΝΑΣΟΛΗΜΟΤ. (Ενδεικηικές Απανηήζεις)

γηα ηνλ Άξε Κσλζηαληηλίδε

HelloWorld. Παύλος Εφραιμίδης. Java Το πρόγραμμα HelloWorld 1

(Ενδεικηικές Απανηήζεις) ΘΔΜΑ Α. Α1. Βιέπε απόδεημε Σει. 262, ζρνιηθνύ βηβιίνπ. Α2. Βιέπε νξηζκό Σει. 141, ζρνιηθνύ βηβιίνπ


ΑΝΤΗΛΙΑΚΑ. Η Μηκή ζθέθηεθε έλαλ ηξόπν, γηα λα ζπγθξίλεη κεξηθά δηαθνξεηηθά αληειηαθά πξντόληα. Απηή θαη ν Νηίλνο ζπλέιεμαλ ηα αθόινπζα πιηθά:

Hellas online Προεπιλεγμένες ρσθμίσεις για FritzBox Fon WLAN 7140 (Annex B) FritzBox Fon WLAN Annex B ( )

Τάπηα με ππάζo, bacon και θέηα by Madame Ginger

Τ ξ ε ύ ο ξ π ς ξ σ ξ ο ί ξ σ _ Ι ε ο α μ ε ι κ ό π

Α Ο Κ Η Α Μ Α Ζ Η Η Ρ Η ( S E A R C H )

Σήκαηα Β Α Γ Γ Δ Λ Η Σ Ο Ι Κ Ο Ν Ο Μ Ο Υ Γ Ι Α Λ Δ Ξ Η - ( 2 ) ΕΙΣΑΓΨΓΗ ΣΤΙΣ ΤΗΛΕΠΙΚΟΙΝΨΝΙΕΣ

02 Αντικειμενοστρεφής Προγραμματισμός

ΑΣΚΛΗΠΙΟΣ ΚΑΠ , 14 ΜΑΙΟΥ, 2017 ΛΑΓΚΑΔΑΣ, ΘΕΣΣΑΛΟΝΙΚΗΣ

EPL 603 TOPICS IN SOFTWARE ENGINEERING. Lab 5: Component Adaptation Environment (COPE)

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

f '(x)g(x)h(x) g'(x)f (x)h(x) h'(x) f (x)g(x)

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #2

Να ζρεδηάζεηο ηξόπνπο ζύλδεζεο κηαο κπαηαξίαο θαη ελόο ιακπηήξα ώζηε ν ιακπηήξαο λα θσηνβνιεί.

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6

Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι

3 ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ ( while, do while )

Λεκηική έκθραζη, κριηική, οικειόηηηα και ηύπος δεζμού ζηις ζηενές διαπροζωπικές ζτέζεις

Ονόματα και Εμβέλεια. Wassily Kandinsky, Black lines, 1913

Κβαντικοί Υπολογισμοί. Πέκπηε Γηάιεμε

Απνηειέζκαηα Εξσηεκαηνινγίνπ 2o ηεηξάκελν

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΕΣΑΙΡΕΙΑ ΜΑΘΗΜΑΣΙΚΗ ΚΤΣΑΛΟΓΡΟΜΙΑ 2007 ΓΙΑ ΣΟ ΓΤΜΝΑΙΟ Παπασκευή 26 Ιανουαπίου 2007 Σάξη: Α Γυμνασίου ΥΟΛΕΙΟ..

Δηζαγωγή ζηε γιώζζα C Παξνπζίαζε 3 ε : Δίζνδνο/ Έμνδνο - Σπλαξηήζεηο - Pointers

x x x x tan(2 x) x 2 2x x 1

Transcript:

Δηζαγσγή ζην.νδτ Framework θαη ζηε C# Μέζνδνη Αλάπηπμεο θαη Αξρηηεθηνληθέο Σπζηεκάησλ ΠΜΣ Πιεξνθνξηαθά Σπζηήκαηα, ΟΠΑ Τξίηε, 12 Ιαλνπαξίνπ 2010 Άγγεινο Μπηκπνύδεο BSc, MSc PhD Candidate, University of Athens Microsoft Student Partner, Microsoft Hellas Software Developer, Nessos S.A.

Agenda Τη είλαη ην.νδτ Γλσξηκία κε Visual Studio IDE Παξνπζίαζε γιώζζαο C# Οκνηόηεηεο/Γηαθνξέο κε Java

1..NET

Τη είλαη ην.net Framework Common Language Runtime Framework Class Library Base Class Library Windows Presentation Foundation Windows Communication Foundation Windows Workflow Foundation Windows CardSpace

.NET Framework

Common Language Infrastructure Δίλαη ην αλνηθηό πξόηππν (ECMA-335 θαη ISO/IEC 23271) Πεξηγξάθεη ηνλ εθηειέζηκν θώδηθα θαη ην πεξηβάιινλ εθηέιεζεο Απνηειείηαη από: Common Type System Μεηα-δεδνκέλα Common Language Specification Virtual Execution System Από Ινύιην 2009: C# θαη CLI ππό Community Promise

Common Language Infrastructure

Γιώζζεο πνπ ζπλάδνπλ κε ην πξόηππν Ada APL Basic (Visual Basic) C# C C++ Java Language COBOL Component Pascal (Queensland Univ of Tech) ECMAScript (JScript) Eiffel (Monash University) Haskell (Utrecht University) lcc (MS Research Redmond) Mondrian (Utrecht) ML (MS Research Cambridge) Mercury (Melbourne U.) Oberon (Zurich University) Oz (Univ of Saarlandes) Perl Python Scheme (Northwestern U.) SmallTalk

Common Type System Να ππάξρεη έλα framework πνπ ππνζηεξίδεη crosslanguage integration, type safety θαη εθηέιεζε θώδηθα κε πςειή απόδνζε Η παξνρή ελόο αληηθεηκελνζηξαθνύο κνληέινπ, πνπ ππνζηεξίδεη ηελ πιήξε πινπνίεζε από δηάθνξεο γιώζζεο πξνγξακκαηηζκνύ Ο πξνζδηνξηζκόο θαλόλσλ ώζηε νη γιώζζεο λα είλαη interoperable

Common Language Specification Τν CLS ππνζύλνιν ηνπ CTS To CLS βνεζάεη ζηε δηαιεηηνπξγηθόηεηα γισζζώλ κε ην λα πξνζδηνξίδεη ραξαθηεξηζηηθά πνπ είλαη θνηλά ζε θάζε γιώζζα πνπ απεπζύλεηαη ην CLR Πρ To UInt32 δελ είλαη CLSCompliant Η C# case sensitive, Visual Basic όρη

Common Language Runtime Just-in-time Compilation Memory management Thread management Exception handling Garbage collection Security

Common Language Runtime

.NET Framework Stack

Γηαδηθαζία Δθηέιεζεο

Τη κπνξνύκε λα ρξεζηκνπνηήζνπκε;

Οθέιε.ΝΔΤ Απηόκαηε δηαρείξηζε πόξσλ Απινπνίεζε πξνγξακκαηηζκνύ Multiplatform πξνζέγγηζε Αζθαιέο ζύζηεκα ηύπσλ δεδνκέλσλ Ιδαληθό κνληέιν αζθάιεηαο Κνηλό πεξηβάιινλ αλάπηπμεο επηηξέπνληαο πνιπγισζζηθό debugging Γνκέο γηα επαλαρξεζηκνπνίεζε θώδηθα

2. Γνωριμία με το Visual Studio Demo

3. C#

C# 101 Τα πάληα είλαη objects θαη θιεξνλνκνύλ ην System.Object Γηάθξηζε αλάκεζα ζε ηύπνπο ηηκήο θαη αλαθνξάο Value Types: primitives, enums, structs Reference Types: interfaces, classes, arrays

Value vs Reference Types struct Point { private int x, y; public Point (int x, int y) { this.x = x; this.y = y; } public int X { get {return x;} set {x = value;} } // private fields // constructor // property } public int Y { get {return y;} set {y = value;} }

Παξάδεηγκα Point p1 = new Point(); Form f1 = new Form(); Form f1; f1 = new Form(); Point p2 = p1; Form f2 = f1;

Παξάδεηγκα Point mypoint = new Point (0, 0); Form myform = new Form(); Test (mypoint, myform); void Test (Point p, Form f) { p.x = 100; // Κακία επίδξαζε ζην mypoint f.text = "Hello, World!"; f = null; // Κακία επίδξαζε ζην myform }

Παξάδεηγκα Point mypoint = new Point (0, 0); Form myform = new Form(); Test (ref mypoint, ref myform); void Test (ref Point p, ref Form f) { p.x = 100; f.text = Hello, World! ; f = null; }

Γειώζεηο Όπσο θαη ε C if (<bool expr>) {... } else {... }; switch(<var>) { case <const>:...; }; while (<bool expr>) {... }; for (<init>;<bool test>;<modify>) {... }; do {... } while (<bool expr>); Όρη ζαλ ηελ C lock(<object>){... }; checked {...}; unchecked {...};

Πίλαθεο (Arrays) Zero based, type bound Βαζίδνληαη ζηελ θιάζε ηνπ.net, System.Array Γειώλνληαη κε ηύπν θαη κνξθή, αιιά ρσξίο όξηα int[] SingleDim; int[,] TwoDim; int [][] Jagged; Γεκηνπξγία SingleDim = new int[20]; TwoDim = new int[,]{{1,2,3},{4,5,6}}; Jagged = new int[1][]; Jagged[0] = new int[]{1,2,3};

Κιάζεηο Υινπνίεζε θώδηθα θαη δεδνκέλσλ Μπνξεί κία θιάζε λα πινπνηεί interfaces Μπνξεί λα θιεξνλνκεί από κία βαζηθή θιάζε (base class) Πεξηέρνπλ Πεδία (fields) Ιδηόηεηεο (properties get/set) Μέζνδνη (Methods) Events, indexers, delegates,

Πξόζβαζε Οκνηόηεηεο κε C++ Public Protected Private Δπεθηάζεηο Sealed Internal Protected internal

Ιδηόηεηεο Δπθνιία πινπνίεζεο κεζόδσλ Φξήζε properties γηα Υινπνίεζε read-only κειώλ (παξαιείπνληαο ην set) Δπηθύξσζε θαηά ηελ αλάζεζε Παξάγσγεο ή ζύλζεηεο ηηκέο Έθζεζε ηηκώλ ζε interfaces string Name { get { return name; } set { name = value; } }

Iterators Δηζήρζεζαλ ζηελ C# 2.0 Δίλαη κία κέζνδνο, get accessor πνπ επηηξέπεη ηελ ρξήζε foreach ζηελ θιάζε ή ην struct ρσξίο λα ρξεηάδεηαη λα πινπνηεζεί ην interface IEnumerable Δίλαη έλα θνκκάηη θώδηθα πνπ επηηξέπεη ηαμηλνκεκέλε ζεηξά ηηκώλ ίδηνπ ηύπνπ Φξεζηκνπνηεί ην yield return

Παξάδεηγκα public class SampleCollection { public int[] items; public SampleCollection() { items = new int[5] { 5, 4, 7, 9, 3 }; } class MainClass { static void Main() { SampleCollection col = new SampleCollection(); // Display the collection items: } public System.Collections.IEnumerable BuildCollection() { } for (int i = 0; i < items.length; i++) { } yield return items[i]; } System.Console.WriteLine("Value s in the collection are:"); foreach (int i in col.buildcollection()) { System.Console.Write(i + " "); } }

Delegates Κάηη ζαλ ηνπο δείθηεο ζε ζπλαξηήζεηο (C/C++) Ιζρπξνί ηύπνη (αληίν ζην type-casting θαη ζηα ζθάικαηα) Η δήισζε δεκηνπξγεί κία typed method signature delegate void Clicked(Element e, Point p); Ο πξαγκαηηθόο αληηπξόζσπνο είλαη έλα ζηηγκηόηππν απηνύ ηνπ ηύπνπ θαη κπνξεί λα γίλεη κε αξρηθνπνίεζε είηε κε Named Method είηε κε Anonymous Τν όξηζκα πεξληέηαη ζηνλ constructor ηνπ αληηπξνζώπνπ

Named methods delegate void Del(int x); void DoWork(int k) { /*... */ } Del d = obj.dowork;

Anonymous Methods delegate void Del(int x); Del d = delegate(int k) { /*... */ };

C# 3.0 Μεγαιύηεξε θαηλνηνκία: επεξσηήζεηο ζηα δεδνκέλα var query = from p in employees where p.salary > 33000m orderby p.name, p.startdate descending group p by p.department;

Anonymous types Σαλ έλαο θαλνληθόο ηύπνο πνπ δεη ζην CLR var v = new { Amount = 108, Message = "Hello" }; var productquery = from prod in products select new { prod.color, prod.price }; foreach (var v in productquery) { Console.WriteLine("Color={0}, Price={1}", v.color, v.price); }

Extension methods Δπηηξέπεηαη λα πξνζηεζνύλ κέζνδνη ζε ππάξρνληεο ηύπνπο ρσξίο λα δεκηνπξγνύκε έλαλ λέν derived ηύπν Καινύληαη πνιύ εύθνια (just static methods underneath) Method chaining

Παξάδεηγκα string x = "some string value"; string y = Utility.Reverse(x); string x = "some string value"; string y = x.reverse(); public static class Utility { public static string Reverse(this string input) { char[] chars = input.tochararray(); Array.Reverse(chars); return new String(chars); } }

Lambda (λ) expressions Τν θαιύηεξν feature ηεο C# 3.0 Σαλ anonymous method αιιά κηθξόηεξν Φξεζηκνπνηεί ηνλ lambda operator => πνπ δηαβάδεηαη goes to δειαδή «ζπλεπάγεηαη» Αξηζηεξά έρνπκε παξακέηξνπο εηζόδνπ θαη δεμηά ηελ έθθξαζε ή ην θνκκάηη θώδηθα. Shorthands Parameter type inference Brace removal (single expression/statement) Bracket removal (single parameter) Expression Trees

Παξάδεηγκα int[] source = new[] { 3, 8, 4, 6, 1, 7, 9, 2, 4, 8 }; foreach (int i in source.where(x => x > 5)) Console.WriteLine(i);

Παξάδεηγκα // Γήισζε delegate public delegate int ChangeInt(int x); // Μία κέζνδνο ζηελ νπνία κπνξεί λα δείμεη ε από πάλσ κεηαβιεηή static public int DoubleIt(int x) { return x * 2; } // Γεκηνπξγία ζηηγκηνηύπνπ ChangeInt mydelegate = new ChangeInt(DelegateSample.DoubleIt); Console.WriteLine("{0}", mydelegate(5));

Παξάδεηγκα ChangeInt mydelegate = new ChangeInt( delegate(int x) { return x * 2; } ); Console.WriteLine("{0}", mydelegate(5));

Παξάδεηγκα ChangeInt mydelegate = x => x * 2; Console.WriteLine("{0}", mydelegate(5));

LINQ Χαρακτηριστικά Γπλαηόηεηα επεξσηήζεσλ κέζα ζηε γιώζζα Πεξηέρεη Standard Query Operations Select Where Join Take/Skip Group By Providers Erik Meijer

Λίγν αθόκα κε compiler internals γηα Linq Μεηάθξαζε ζε θαλνληθή C# Νσξίο λσξίο ζηε κεηαγιώηηηζε

Δπεθηακέλε κνξθή 1 Query expression ζε θαλνληθή C#: var query = employees.where(p => p.salary > 33000m).OrderBy(p => p.name).thenbydescending(p => p.startdate).groupby(p => p.department);

Δπεθηακέλε κνξθή 2 Αθαίξεζε ηεο έκκεζεο απόδνζεο ηύπνπ IEnumerable<Employee> query = employees.where(p => p.salary > 33000m).OrderBy(p => p.name).thenbydescending(p => p.startdate).groupby(p => p.department);

Δπεθηακέλε κνξθή 3 Αθαίξεζε Extension Methods IEnumerable<Employee> query = Enumerable.GroupBy( Enumerable.ThenByDescending( Enumerable.OrderBy( Enumerable.Where(employees, p => p.salary > 33000m), p => p.name), p => p.startdate), p => p.department);

Δπεθηακέλε κνξθή 4 Αθαίξεζε lambdas IEnumerable<Employee> query = Enumerable.GroupBy( Enumerable.ThenByDescending( Enumerable.OrderBy( Enumerable.Where(employees, new Func<Employee,bool> (BigSalary), new Func<Employee, string> (NameFunc), new Func<Employee, DateTime> (StartFunc), new Func<Employee, Department> (DeptFunc));

Δπεθηακέλε κνξθή 5 Αθαίξεζε type inference κε generics IEnumerable<Employee> query = Enumerable.GroupBy<Employee, Department>( Enumerable.ThenByDescending<Employee, DateTime>( Enumerable.OrderBy<Employee, string>( Enumerable.Where<Employee>(employees, new Func<Employee,bool> (BigSalary), new Func<Employee, string> (NameFunc), new Func<Employee, DateTime> (StartFunc), new Func<Employee, Department> (DeptFunc));

C# vs Java C# Closures Runtime generics Generics θαη κε primitive types Delegates Events LINQ Extension methods First-class properties Iterators Operator overloading Indexers Anonymous types Expression trees Using blocks Με ειεγρόκελα exceptions Decimal ηύπνη Java Enumerations Inner Classes Checked exceptions Μηθξό unit δηαλνκήο Πεξηζζόηεξα IDE s Τξέρεη ώξηκα δπλακηθέο γιώζζεο

Βηβιία

Σύλδεζκνη http://msdn.microsoft.com http://www.studentguru.gr http://www.microsoft.com/express http://www.windowsclient.net http://www.asp.net http://creators.xna.com http://www.dreamspark.com http://channel9.msdn.com http://silverlight.net

Δξγαιεία http://www.red-gate.com/products/reflector/ http://www.linqpad.net/ http://www.fiddler2.com/fiddler2/ http://www.httpwatch.com/download/ http://www.jetbrains.com/ http://www.ndepend.com http://www.nunit.org

Δπηθνηλσλία Άγγεινο Μπηκπνύδεο http://www.studentguru.gr/blogs/grnemo http://www.twitter.com/aggelosmp http://www.facebook.com/aggelosmp http://aggelosmp.xelixis.net

Δπραξηζηώ Happy development time!!!