Ιµπλεµεντινγ ινηεριτανχε ιν Χ# ...80Χονστρυχτορ χαλλσ ιν Ινηεριτανχε...83 Τηε βασε κεψωορδ − Χαλλινγ Χονστρυχτορσ οφ τηε βασε−χλασσ εξπλιχιτλψ...85 Προτεχτεδ Αχχεσσ Μοδιφιερ ...87 Τηε Πρ
Trang 11
14 λεσσονσ το γετ ψου σταρτεδ ωιτη Χ# ανδ ΝΕΤ
Αυτηορ: Φαραζ Ρασηεεδ
Εδιτορσ: Τορε Νεστενιυσ ϑονατηαν Ωορτηινγτον
Λεε Αδδψ
ωωω.προγραµµερσηεαϖεν.χοµ
Trang 3∆ατα Σ.Λ
Τηε ινφορµατιον ιν τηισ βοοκ ισ διστριβυτεδ ον αν ∀ασ ισ∀ βασισ, ωιτηουτ ωαρραντψ Αλτηουγη εϖερψ πρεχαυτιον ηασ βεεν τακεν ιν τηε πρεπαρατιον οφ τηισ ωορκ, νειτηερ τηε αυτηορσ νορ Σψνχηρον ∆ατα σηαλλ ηαϖε ανψ λιαβιλιτψ το ανψ περσον ορ εντιτψ ωιτη ρεσπεχτ
το ανψ λοσσ ορ δαµαγε χαυσεδ ορ αλλεγεδ το βε χαυσεδ διρεχτλψ ορ ινδιρεχτλψ βψ τηε ινφορµατιον χονταινεδ ιν τηισ ωορκ
Τραδεµαρκεδ ναµεσ µαψ αππεαρ ιν τηε τεξτ οφ τηισ βοοκ Τραδεµαρκεδ ναµεσ αρε νοτ εξπλιχιτλψ µαρκεδ ωιτη τηε τραδεµαρκ σψµβολ ωιτηιν τηισ βοοκ, ηοωεϖερ τηεψ αρε ονλψ υσεδ ιν αν εδιτοριαλ φασηιον ανδ το τηε βενεφιτ οφ τηε τραδεµαρκ οωνερ ωιτη νο ιντεντιον οφ ινφρινγεµεντ οφ τηε τραδεµαρκ
Το οβταιν τηε λατεστ υπδατεσ το τηισ βοοκ, το συγγεστ χορρεχτιονσ ορ το µακε οτηερ χοµµεντσ, ϖισιτ:
ηττπ://ωωω.προγραµµερσηεαϖεν.χοµ/2/ΧΣηαρπΒοοκ
Trang 4Ι ηοπε τηατ τηισ ε−βοοκ ηελπσ ψου γετ το γριπσ ωιτη τηε Χ# προγραµµινγ λανγυαγε ανδ τηε Νετ πλατφορµ ανδ προϖεσ
α υσεφυλ ρεφερενχε φορ τηε φυτυρε Ιτ ισ τηε φιρστ εδιτιον, βυτ ηοπεφυλλψ νοτ τηε λαστ ψουρ φεεδβαχκ ωιλλ ηελπ υσ ιν τηατ σενσε, σο πλεασε δο νοτ ηεσιτατε το σενδ ψουρ χοµµεντσ ανδ εσπεχιαλλψ ινφορµατιον αβουτ ανψ µιστακεσ το
ινφο≅προγραµµερσηεαϖεν.χοµ
Ηαϖε φυν,
ϑονατηαν Ωορτηινγτον
Προγραµµερσ Ηεαϖεν Χ# Σχηοολ Εδιτορ
Trang 5Σινχε 2000, Τορε ηασ ωορκεδ φυλλ τιµε ον Προγραµµερσ Ηεαϖεν Α ρανγε οφ φρεελανχε εξπερτσ φροµ αρουνδ τηε ωορλδ, ινχλυδινγ Ενγλανδ, τηε ΥΣΑ, Χηινα, Κορεα ανδ Ινδια, ηαϖε αλσο χοντριβυτεδ το τηε σιτε
Σο, ωηψ νοτ σεε ηοω Προγραµµερσ Ηεαϖεν χαν ηελπ ψου ωιτη ψουρ δεϖελοπµεντ ωορκ τοδαψ? 650.000 υνιθυε ϖισιτορσ α µοντη χαν∋τ βε ωρονγ!
ηττπ://ωωω.προγραµµερσηεαϖεν.χοµ/
.ΝΕΤ νεωσλεττερ
Τηε Προγραµµερ∋σ Ηεαϖεν Νετ νεωσλεττερ, σεντ ουτ υπ το φουρ τιµεσ α µοντη, χονταινσ τηε λατεστ Νετ νεωσ αλονγ ωιτη ινφορµατιον ον νεω Νετ αρτιχλεσ ανδ ρεσουρχεσ ον Προγραµµερ∋σ Ηεαϖεν Τηε Νετ πλατφορµ ισ εϖολϖινγ φαστ, ανδ σιγνινγ υπ φορ ουρ νεωσλεττερ ισ α γρεατ ωαψ το βε κεπτ ιν τηε πιχτυρε Ιν τηε ιµµεδιατε φυτυρε, εξπεχτ χοϖεραγε
οφ Χ# 3.0 ανδ ΩΧΦ
Σιγν υπ τοδαψ φορ φρεε ατ ηττπ://ωωω.προγραµµερσηεαϖεν.χοµ/2/∆οτΝετ−Νεωσλεττερ
Trang 6α σεριεσ οφ αρτιχλεσ εξπλαινινγ τηε νεω φεατυρεσ ανδ τηε χονχεπτσ βεηινδ τηεµ ιν τηε σαµε πλαιν Ενγλιση τηατ ψου ηαϖε φουνδ ιν τηισ βοοκ
Trang 77
Χοντεντσ Ιν Συµµαρψ
1 Ιντροδυχτιον 17
2 Χ# Λανγυαγε Φυνδαµενταλσ 31
3 Χλασσεσ ανδ Οβϕεχτσ 53
4 Ινηεριτανχε & Πολψµορπηισµ 78
5 Στρυχτυρεσ, Ενυµερατιον, Γαρβαγε Χολλεχτιον & Νεστεδ Χλασσεσ 99
6 Αβστραχτ Χλασσεσ & Ιντερφαχεσ 115
7 Αρραψσ, Χολλεχτιονσ & Στρινγ Μανιπυλατιον 129
8 Εξχεπτιον Ηανδλινγ 155
9 ∆ελεγατεσ & Εϖεντσ 171
10 ΩινΦορµσ & Ωινδοωσ Αππλιχατιονσ 190
11 Μορε Ωινδοωσ Χοντρολσ & Στανδαρδ ∆ιαλογ Βοξεσ 211
12 ∆ατα Αχχεσσ υσινγ Α∆Ο.Νετ 230
13 Μυλτιτηρεαδινγ 265
14 Τηε Φιλε Σψστεµ & Στρεαµσ 288
15 Νεω Φεατυρεσ Ιν Χ# 2.0 322
16 Τηε Ροαδ Αηεαδ 338
Trang 8Χοντεντσ Ιν ∆εταιλ
1 Ιντροδυχτιον 17
Τηε Ωαψ 17
Τοολσ οφ τηε τραδε 17
Τηε Χ# Λανγυαγε 17
Τηε Νετ Αρχηιτεχτυρε ανδ Νετ Φραµεωορκ 18
Τηε Χοµµον Λανγυαγε Ρυντιµε (ΧΛΡ) 18
ΜΣΙΛ (Μιχροσοφτ Ιντερµεδιατε Λανγυαγε) Χοδε 18
ϑυστ Ιν Τιµε Χοµπιλερσ (ϑΙΤερσ) 19
Τηε Φραµεωορκ Χλασσ Λιβραρψ (ΦΧΛ) 19
Τηε Χοµµον Λανγυαγε Σπεχιφιχατιον (ΧΛΣ) 19
Τηε Χοµµον Τψπε Σψστεµ (ΧΤΣ) 20
Γαρβαγε Χολλεχτιον (ΓΧ) 20
Τηε Νετ Φραµεωορκ 20
Χ# χοµπαρεδ το Χ++ 20
Τηε ςισυαλ Στυδιο.Νετ Ι∆Ε 21
Προϕεχτσ ανδ Σολυτιονσ 21
Τοολβοξ, Προπερτιεσ ανδ Χλασσ ςιεω Ταβσ 22
Ωριτινγ Ψουρ Φιρστ Ηελλο Ωορλδ Χονσολε Αππλιχατιον ιν Χ# 22
Ωορκινγ Ωιτηουτ ςισυαλ Στυδιο.Νετ 22
Ωιτη ςισυαλ Στυδιο.Νετ 23
Υνδερστανδινγ τηε Ηελλο Ωορλδ Αππλιχατιον Χοδε: 25
Ναµεσπαχεσ ιν Χ# 25
Τηε υσινγ Κεψωορδ 26
Τηε χλασσ Κεψωορδ 26
Τηε Μαιν() Μετηοδ 26
Πριντινγ ον τηε Χονσολε 27
Χοµµεντσ 27
Ιµπορταντ ποιντσ το ρεµεµβερ 28
Α µορε ιντεραχτιϖε Ηελλο Ωορλδ Αππλιχατιον 29
∆ισχυσσινγ α µορε ιντεραχτιϖε Ηελλο Ωορλδ Αππλιχατιον 29
2 Χ# Λανγυαγε Φυνδαµενταλσ 31
Λεσσον Πλαν 31
Βασιχ ∆ατα Τψπεσ ανδ τηειρ µαππινγ το ΧΤΣ (Χοµµον Τψπε Σψστεµ) 31
ςαριαβλεσ 32
Χονσταντ ςαριαβλεσ ορ Σψµβολσ 33
Ναµινγ Χονϖεντιονσ φορ ϖαριαβλεσ ανδ µετηοδσ 33
Οπερατορσ ιν Χ# 34
Αριτηµετιχ Οπερατορσ 34
Πρεφιξ ανδ Ποστφιξ νοτατιον 36
Trang 99
Ασσιγνµεντ Οπερατορσ 36
Ρελατιοναλ Οπερατορσ 37
Οτηερ Οπερατορσ 39
Οπερατορ Πρεχεδενχε 39
Φλοω Χοντρολ Ανδ Χονδιτιοναλ Στατεµεντσ 39
Τηε ιφ ελσε στατεµεντ 39
Τηε σωιτχη χασε στατεµεντ 42
Λοοπσ Ιν Χ# 45
Τηε φορ Λοοπ 45
Σοµε ιµπορταντ ποιντσ αβουτ τηε φορ λοοπ 46
Τηε δο ωηιλε Λοοπ 48
ωηιλε Λοοπ 48
Αρραψσ ιν Χ# 49
Αρραψ ∆εχλαρατιον 49
Αχχεσσινγ τηε ϖαλυεσ στορεδ ιν αν αρραψ 49
φορεαχη Λοοπ 50
3 Χλασσεσ ανδ Οβϕεχτσ 53
Λεσσον Πλαν 53
Χονχεπτ οφ α Χλασσ 53
Οβϕεχτσ 53
Φιελδσ 54
Μετηοδσ 55
Ινσταντιατινγ τηε χλασσ 56
Αχχεσσινγ τηε µεµβερσ οφ α χλασσ 56
Αχχεσσ Μοδιφιερσ ορ Αχχεσσιβιλιτψ Λεϖελσ 58
Προπερτιεσ 60
Υσινγ Προπερτιεσ 61
Πρεχαυτιονσ ωηεν υσινγ προπερτιεσ 63
Στατιχ Μεµβερσ οφ τηε χλασσ 65
Σοµε Μορε αβουτ Μετηοδσ 67
Χονστρυχτορσ 67
Φιναλιζε() Μετηοδ οφ Οβϕεχτ χλασσ 70
∆εστρυχτορσ 70
Μετηοδ ανδ Χονστρυχτορ Οϖερλοαδινγ 71
Οϖερλοαδινγ Χονστρυχτορσ 72
ςαλυε τψπεσ (ουτ & ρεφ Κεψωορδσ) 73
Ρεφερενχε τψπεσ 75
Σοµε µορε αβουτ ρεφερενχεσ ανδ οβϕεχτσ 75
4 Ινηεριτανχε & Πολψµορπηισµ 78
Λεσσον Πλαν 78
Ινηεριτανχε 78
Ινηεριτανχε ιν Χ# 79
Trang 10Ιµπλεµεντινγ ινηεριτανχε ιν Χ# 80
Χονστρυχτορ χαλλσ ιν Ινηεριτανχε 83
Τηε βασε κεψωορδ − Χαλλινγ Χονστρυχτορσ οφ τηε βασε−χλασσ εξπλιχιτλψ 85
Προτεχτεδ Αχχεσσ Μοδιφιερ 87
Τηε Προτεχτεδ ιντερναλ Αχχεσσ Μοδιφιερ 88
Τηε σεαλεδ κεψωορδ 88
Οβϕεχτ χλασσ − τηε βασε οφ αλλ χλασσεσ 89
Πολψµορπηισµ 90
Υσινγ τηε ρεφερενχε οφ τηε βασε τψπε φορ ρεφερενχινγ τηε οβϕεχτσ οφ χηιλδ τψπεσ 90
Υσινγ µετηοδσ ωιτη τηε σαµε ναµε ιν τηε Βασε ανδ τηε Συβ−χλασσ 91
Οϖερριδινγ τηε µετηοδσ − ϖιρτυαλ ανδ οϖερριδε κεψωορδσ 92
Τηε νεω κεψωορδ 95
Τψπε χαστινγ τηε οβϕεχτσ − Υπ−χαστινγ ανδ ∆οων−χαστινγ 96
Τηε ισ ανδ ασ κεψωορδσ 96
Βοξινγ ανδ Υν−βοξινγ 97
5 Στρυχτυρεσ, Ενυµερατιον, Γαρβαγε Χολλεχτιον & Νεστεδ Χλασσεσ 99
Λεσσον Πλαν 99
Στρυχτυρεσ (στρυχτ) 99
∆εφινινγ α στρυχτ 99
Ινσταντιατινγ τηε στρυχτ 100
στρυχτσ ασ ςαλυε Τψπεσ 104
Ενυµερατιον 105
Τηε Νεεδ φορ Ενυµερατιον 105
Υσινγ Ενυµερατιον (ενυµ) 106
Μορε αβουτ Ενυµερατιονσ 108
Γαρβαγε Χολλεχτιον ιν Νετ 110
∆εστρυχτορσ ανδ Περφορµανχε Οϖερηεαδ 112
Σψστεµ.ΓΧ.Χολλεχτ() µετηοδ 112
Νεστεδ Χλασσεσ ιν Χ# 112
6 Αβστραχτ Χλασσεσ & Ιντερφαχεσ 115
Λεσσον Πλαν 115
Αβστραχτ Χλασσεσ 115
Ιντερφαχεσ 118
Ιµπλεµεντινγ Μορε Τηαν Ονε Ιντερφαχε 121
Εξπλιχιτ ιµπλεµεντατιον οφ µετηοδσ 124
Χαστινγ το αν ιντερφαχε υσινγ ισ ανδ ασ οπερατορσ 125
Αν ιντερφαχε ινηεριτινγ ονε ορ µορε ιντερφαχεσ 127
7 Αρραψσ, Χολλεχτιονσ & Στρινγ Μανιπυλατιον 129
Λεσσον Πλαν 129
Αρραψσ Ρεϖισιτεδ 129
Μυλτιδιµενσιοναλ Αρραψσ 129
Ινσταντιατινγ ανδ αχχεσσινγ τηε ελεµεντσ οφ µυλτιδιµενσιοναλ αρραψσ 131
Trang 1111
Ινσταντιατινγ ανδ αχχεσσινγ ϑαγγεδ Αρραψσ 132
Σοµε οτηερ ιµπορταντ ποιντσ αβουτ µυλτιδιµενσιοναλ αρραψσ 134
Τηε φορεαχη Λοοπ 135
Χολλεχτιονσ 138
Τηε ΑρραψΛιστ χλασσ 138
Τηε Σταχκ χλασσ 141
Τηε Θυευε χλασσ 143
∆ιχτιοναριεσ 144
Τηε Ηασηταβλε χλασσ 144
Χονστρυχτινγ α Ηασηταβλε 144
Αδδινγ ιτεµσ το α Ηασηταβλε 145
Ρετριεϖινγ ιτεµσ φροµ τηε Ηασηταβλε 145
Ρεµοϖινγ α παρτιχυλαρ ιτεµ 145
Γεττινγ τηε χολλεχτιον οφ κεψσ ανδ ϖαλυεσ 146
Χηεχκινγ φορ τηε εξιστενχε οφ α παρτιχυλαρ ιτεµ ιν α ηασηταβλε 147
Τηε ΣορτεδΛιστ χλασσ 147
Στρινγ Ηανδλινγ ιν Χ# 149
Τηε στρινγ χλασσ ανδ ιτσ µεµβερσ 150
Τηε ΣτρινγΒυιλδερ χλασσ 152
8 Εξχεπτιον Ηανδλινγ 155
Λεσσον Πλαν 155
Εξχεπτιονσ Βασιχσ 155
Τηε νεεδ φορ Εξχεπτιονσ 155
Εξχεπτιονσ ιν Χ# ανδ Νετ 157
Ηανδλινγ Εξχεπτιονσ υσινγ τηε τρψ χατχη φιναλλψ βλοχκσ 158
Υσε οφ τηε τρψ χατχη βλοχκ 158
Εξχεπτιον χλασσ∋ Μεσσαγε ανδ ΣταχκΤραχε Προπερτιεσ 159
Τηε φιναλλψ βλοχκ 161
Χατχηινγ Μυλτιπλε Εξχεπτιονσ υσινγ µυλτιπλε χατχη βλοχκσ 163
Αν ιµπορταντ ποιντ το ρεµεµβερ ιν µυλτιπλε χατχη βλοχκσ 166
Οτηερ ιµπορταντ ποιντσ αβουτ Εξχεπτιον Ηανδλινγ ιν Χ# 167
∆εφινινγ ψουρ οων χυστοµ εξχεπτιονσ 168
Εξχεπτιον Ηιεραρχηψ ιν τηε Νετ Φραµεωορκ 168
Τηροωινγ αν εξχεπτιον: τηε τηροω κεψωορδ 169
9 ∆ελεγατεσ & Εϖεντσ 171
Λεσσον Πλαν 171
∆ελεγατεσ Βασιχσ 171
Τηε τψπε ορ σιγνατυρε οφ τηε µετηοδ τηε δελεγατε χαν ποιντ το 171
Τηε δελεγατε ρεφερενχε, τηατ χαν βε υσεδ το ρεφερενχε α µετηοδ 173
3.Τηε αχτυαλ µετηοδ ρεφερενχεδ βψ τηε δελεγατε 173
Χαλλινγ τηε αχτυαλ µετηοδ τηρουγη ιτσ δελεγατε 173
Χονφυσιον ιν τερµινολογψ 176
Trang 12∆ελεγατεσ ιν τηε Νετ Φραµεωορκ 176
Πασσινγ δελεγατεσ το µετηοδσ 176
Μυλτιχαστ ∆ελεγατεσ 178
Ιµπλεµεντινγ α Μυλτιχαστ ∆ελεγατε 178
Ρεµοϖινγ α µετηοδ φροµ τηε µυλτιχαστ δελεγατε∋σ ινϖοχατιον λιστ 180
Εϖεντσ ανδ Εϖεντ Ηανδλινγ 181
Εϖεντ Ηανδλινγ ιν Χ# 181
Α Χλοχκ Τιµερ Εξαµπλε 183
Μυλτιχαστ εϖεντσ 185
Πασσινγ σοµε δατα ωιτη τηε Εϖεντ: Συβ−χλασσινγ Σψστεµ.ΕϖεντΑργσ 186
10 ΩινΦορµσ & Ωινδοωσ Αππλιχατιονσ 190
Λεσσον Πλαν 190
Ωινδοωσ Αππλιχατιονσ ανδ Νετ 190
ΩινΦορµ Βασιχσ 190
Βυιλδινγ τηε ∀Ηελλο ΩινΦορµ∀ Αππλιχατιον 191
Υνδερστανδινγ τηε Χοδε 192
Αδδινγ Εϖεντ Ηανδλινγ 193
ςισυαλ Στυδιο.Νετ & ιτσ Ι∆Ε (Ιντεγρατεδ ∆εϖελοπµεντ Ενϖιρονµεντ) 196
ΙντελλιΣενσε ανδ Ηοτ Χοµπιλερ 196
Χοδε Φολδινγ 197
Ιντεγρατεδ Χοµπιλερ, Σολυτιον βυιλδερ ανδ ∆εβυγγερ 197
Φορµ ∆εσιγνερ 197
Σολυτιον Εξπλορερ 198
Μενυσ ιν τηε ςισυαλ Στυδιο Νετ Ι∆Ε 199
Υσινγ ςισυαλ Στυδιο.Νετ το βυιλδ τηε ∀Ηελλο ΩινΦορµ∀ Αππλιχατιον 200
Χρεατινγ α νεω Προϕεχτ 200
Σεττινγ ϖαριουσ προπερτιεσ οφ τηε φορµ 201
Αδδινγ Χοντρολσ το τηε Φορµ 202
Αδδινγ Εϖεντ Ηανδλινγ 203
Εξεχυτινγ τηε αππλιχατιον 203
Τηε χοδε γενερατεδ βψ τηε Φορµ ∆εσιγνερ 204
Υσινγ Μορε Χοντρολσ 204
Υσινγ ϖαριουσ χοντρολσ ιν αν αππλιχατιον: Προγραµµερ∋σ Σηοππινγ Χαρτ 205
∆εσιγνινγ τηε φορµ ανδ πλαχινγ τηε χοντρολσ 206
Ωριτινγ Χοδε φορ Εϖεντ Ηανδλινγ 207
Σοµε Ιµπορταντ Ποιντσ φορ δεσιγνινγ Ωινδοωσ Αππλιχατιονσ 210
11 Μορε Ωινδοωσ Χοντρολσ & Στανδαρδ ∆ιαλογ Βοξεσ 211
Λεσσον Πλαν 211
Χολλεχτιον Χοντρολσ 211
Λιστ Βοξ Χοντρολ 211
Αδδινγ ιτεµσ το τηε λιστ βοξ 212
Αχχεσσινγ ιτεµσ ιν τηε λιστ βοξ 212
Trang 1313
Ρεµοϖινγ ιτεµσ φροµ τηε λιστ βοξ 213
Λιστ Βοξ Εϖεντσ 213
Χοµβο Βοξ Χοντρολ 214
Τρεε ςιεω 214
Τηε ΤρεεΝοδε Εδιτορ 215
Αδδινγ/Ρεµοϖινγ ιτεµσ ατ ρυντιµε 216
Τρεε ςιεω Εϖεντσ 218
Ιµαγε Λιστ Χοντρολ 219
Ατταχηινγ Αν Ιµαγε Λιστ το διφφερεντ χοντρολσ 219
Λιστ ςιεω Χοντρολ 220
Τωο Ιµαγε Λιστσ ιν τηε Λιστ ςιεω Χοντρολ 220
Αδδινγ ιτεµσ το τηε λιστ ϖιεω χοντρολ υσινγ δεσιγνερ 220
Αδδινγ Ιτεµσ ατ ρυντιµε υσινγ χοδε 221
Εϖεντσ φορ Λιστ ςιεω Χοντρολ 222
Μαιν Μενυ 222
Τοολ Βαρ 223
∆ατε Τιµε Πιχκερ 223
Ωινδοωσ Στανδαρδ ∆ιαλογ Βοξεσ 224
Οπεν Φιλε ∆ιαλογ Βοξ 224
Υσινγ τηε Οπεν Φιλε ∆ιαλογ Βοξ 225
Σαϖε Φιλε ∆ιαλογ Βοξ 226
Φοντ ανδ Χολορ ∆ιαλογ Βοξεσ 227
12 ∆ατα Αχχεσσ υσινγ Α∆Ο.Νετ 230
Λεσσον Πλαν 230
Ιντροδυχινγ Α∆Ο.Νετ 230
∆ιφφερεντ χοµπονεντσ οφ Α∆Ο.Νετ 231
Α ρεϖιεω οφ βασιχ ΣΘΛ θυεριεσ 232
ΣΘΛ ΣΕΛΕΧΤ Στατεµεντ 232
ΣΘΛ ΙΝΣΕΡΤ Στατεµεντ 232
ΣΘΛ ΥΠ∆ΑΤΕ Στατεµεντ 232
ΣΘΛ ∆ΕΛΕΤΕ Στατεµεντ 233
Περφορµινγ χοµµον δατα αχχεσσ τασκσ ωιτη Α∆Ο.Νετ 233
Αχχεσσινγ ∆ατα υσινγ Α∆Ο.Νετ 234
∆εφινινγ τηε χοννεχτιον στρινγ 234
∆εφινινγ α Χοννεχτιον 235
∆εφινινγ τηε χοµµανδ ορ χοµµανδ στρινγ 235
∆εφινινγ τηε ∆ατα Αδαπτερ 236
Χρεατινγ ανδ φιλλινγ τηε ∆αταΣετ 236
Α ∆εµονστρατιον Αππλιχατιον 237
Λοαδινγ ταβλεσ 238
Φιλλινγ τηε χοντρολσ ον τηε Φορµ 239
Ναϖιγατινγ τηρουγη τηε ρεχορδσ 241
Trang 14Υπδατινγ τηε ταβλε 242
Βυιλδινγ τηε Αππλιχατιον 243
Λοαδινγ τηε ταβλε ανδ δισπλαψινγ δατα ιν τηε φορµ∋σ χοντρολσ 244
Ινιτιαλινγ Χοµµανδσ 244
Αδδινγ Παραµετερσ το τηε χοµµανδσ 246
Τηε ΤογγλεΧοντρολσ() µετηοδ οφ ουρ αππλιχατιον 246
Εδιτινγ (ορ Υπδατινγ) Ρεχορδσ 247
Εϖεντ Ηανδλερ φορ τηε Σαϖε Βυττον 248
Εϖεντ Ηανδλερ φορ τηε Χανχελ Βυττον 250
Ινσερτινγ Ρεχορδσ 251
∆ελετινγ α Ρεχορδ 252
Υσινγ Στορεδ Προχεδυρεσ 254
Σαµπλε Στορεδ Προχεδυρεσ 254
ΥΠ∆ΑΤΕ Στορεδ Προχεδυρε 254
ΙΝΣΕΡΤ Στορεδ Προχεδυρε 255
∆ΕΛΕΤΕ Στορεδ Προχεδυρε 255
ΣΕΛΕΧΤ Στορεδ Προχεδυρε 255
Υσινγ Στορεδ Προχεδυρεσ ωιτη Α∆Ο.Νετ ιν Χ# 256
Τηε µοδιφιεδ ΙνιτιαλιζεΧοµµανδσ() µετηοδ 257
Υσινγ ∆ατα Γριδ Χοντρολ το ςιεω Νετ δατα 259
Α ∆εµονστρατιον Αππλιχατιον φορ ∆ατα Γριδ Χοντρολ 259
Σεχονδ ∆εµονστρατιον − Υσινγ µυλτιπλε ρελατεδ ταβλεσ 260
Ρετριεϖινγ δατα υσινγ τηε ΣΕΛΕΧΤ χοµµανδ 262
Υπδατινγ Ρεχορδσ υσινγ ΙΝΣΕΡΤ, ΥΠ∆ΑΤΕ ανδ ∆ΕΛΕΤΕ χοµµανδσ 264
13 Μυλτιτηρεαδινγ 265
Λεσσον Πλαν 265
Ωηατ ισ Μυλτιτηρεαδινγ 265
Μυλτιτηρεαδινγ ιν Χ# 267
Τηρεαδ Φυνχτιοναλιτψ 269
Στατιχ µεµβερσ οφ τηε Σψστεµ.Τηρεαδινγ.Τηρεαδ χλασσ 269
Ινστανχε µεµβερσ οφ τηε Σψστεµ.Τηρεαινγ.Τηρεαδ χλασσ 270
Τηρεαδ ∆εµονστρατιον Εξαµπλε − Βασιχ Οπερατιονσ 270
Τηρεαδ ∆εµονστρατιον Εξαµπλε − Τηρεαδ Πριοριτψ 274
Τηρεαδ ∆εµονστρατιον Εξαµπλε − Τηρεαδ Εξεχυτιον Χοντρολ 278
Υσινγ ϑοιν() το ωαιτ φορ ρυννινγ τηρεαδσ 279
Τηρεαδ Σψνχηρονιζατιον 282
Τηε Χ# Λοχκινγ Μεχηανισµ 282
Τηρεαδσ µαψ χαυσε ∆εαδλοχκ 285
14 Τηε Φιλε Σψστεµ & Στρεαµσ 288
Λεσσον Πλαν 288
Ωορκινγ ωιτη τηε Φιλε Σψστεµ 288
Οβταινινγ τηε Αππλιχατιονσ Ενϖιρονµεντ Ινφορµατιον Τηε Σψστεµ.Ενϖιρονµεντ χλασσ 288
Trang 1515
∆εµονστρατιον Αππλιχατιον Ενϖιρονµεντ Ινφορµατιον 288
Οβταινινγ τηε πατησ οφ ϖαριουσ Ωινδοωσ Στανδαρδ φολδερσ Ενϖιρονµεντ.ΓετΦολδερΠατη() 290
Μανιπυλατινγ Φιλεσ υσινγ Σψστεµ.ΙΟ.Φιλε ανδ Σψστεµ.ΙΟ.ΦιλεΙνφο χλασσεσ 292
Σψστεµ.ΙΟ.Φιλε χλασσ 292
Χρεατινγ α φιλε υσινγ Χρεατε() µετηοδ 293
Χοπψινγ ανδ Μοϖινγ α φιλε υσινγ Χοπψ() ανδ Μοϖε() µετηοδσ 294
Χηεχκινγ τηε εξιστενχε οφ τηε φιλε υσινγ Εξιστσ() µετηοδ 294
Γεττινγ Αττριβυτεσ οφ α φιλε υσινγ ΓετΑττριβυτεσ() µετηοδ 294
Σψστεµ.ΙΟ.ΦιλεΙνφο χλασσ 295
Α θυιχκ ανδ σιµπλε εξαµπλε 295
Μανιπυλατινγ ∆ιρεχτοριεσ (φολδερσ) υσινγ Σψστεµ.ΙΟ.∆ιρεχτορψ ανδ Σψστεµ.ΙΟ.∆ιρεχτορψΙνφο χλασσεσ 296
Σψστεµ.ΙΟ.∆ιρεχτορψ χλασσ 297
Χρεατινγ, δελετινγ ανδ χηεχκινγ φορ τηε εξιστενχε οφ διρεχτοριεσ 297
Γεττινγ τηε χοντεντσ (φιλεσ ανδ συβ−διρεχτοριεσ) οφ α διρεχτορψ 298
Σψστεµ.ΙΟ.∆ιρεχτορψΙνφο χλασσ 299
∆εµονστρατιον αππλιχατιον φορ τηε ∆ιρεχτορψΙνφο χλασσ 300
Στρεαµσ 301
Αν οϖερϖιεω οφ τηε διφφερεντ τψπεσ οφ στρεαµσ 302
Τηε Σψστεµ.Στρεαµ χλασσ τηε βασε οφ αλλ στρεαµσ ιν τηε Νετ φραµεωορκ 302
∆ιφφερεντ τψπεσ οφ φιλε στρεαµσ Ρεαδινγ ανδ Ωριτινγ το φιλεσ 303
Υσινγ Σψστεµ.ΙΟ.ΦιλεΣτρεαµ το ρεαδ ανδ ωριτε δατα το φιλεσ 303
Α στρινγ ρεπρεσεντινγ τηε πατη ανδ ναµε οφ τηε φιλε 303
Οπενινγ ανδ ρεαδινγ φροµ α φιλε 304
Υσινγ ΒιναρψΡεαδερ ανδ ΒιναρψΩριτερ το ρεαδ ανδ ωριτε πριµιτιϖεσ το φιλεσ 306
Υσινγ ΣτρεαµΡεαδερ ανδ ΣτρεαµΩριτερ το ρεαδ ανδ ωριτε τεξτ φιλεσ 308
Σεριαλιζατιον ανδ ∆ε−σεριαλιζατιον 309
Ιµπλεµεντινγ Σεριαλιζατιον ανδ ∆εσεριαλιζατιον Α σιµπλε εξαµπλε 309
Φορµαττερσ ιν Σεριαλιζατιον 312
Πρεϖεντινγ χερταιν ελεµεντσ φροµ Σεριαλιζινγ Τηε [ΝονΣεριαλιζεδ] αττριβυτε 312
Γεττινγ νοτιφιεδ ωηεν ∆εσεριαλιζινγ − τηε Ι∆εσεριαλιζατιονΧαλλΒαχκ ιντερφαχε 315
Ασψνχηρονουσ Ρεαδινγ ανδ Ωριτινγ ωιτη Στρεαµσ 318
Α δεµονστρατιον αππλιχατιον 319
Ισσυεσ Ρεγαρδινγ Ασψνχηρονουσ Ρεαδ/Ωριτε 320
Ιµπορταντ ποιντσ ρεγαρδινγ τηε υσε οφ Στρεαµσ 321
15 Νεω Φεατυρεσ Ιν Χ# 2.0 322
Χ# εϖολϖεσ 322
Τηε νεεδ φορ γενεριχσ 322
Γενεριχ χολλεχτιονσ 323
Χρεατινγ γενεριχ τψπεσ 325
Χονστραινινγ τψπε παραµετερσ 327
Φιναλ τηουγητσ ον γενεριχσ 329
Παρτιαλ τψπεσ 329
Trang 16Νυλλαβλε τψπεσ 332
Ανονψµουσ µετηοδσ ιν εϖεντ ηανδλινγ 334
Αδϖεντυρεσ ωιτη ανονψµουσ µετηοδσ 335
Φιναλ τηουγητσ ον Χ# 2.0 337
16 Τηε Ροαδ Αηεαδ 338
Λεαρνινγ Μορε 338
Γεττινγ Ηελπ 338
Βοοκ.ρεϖισιον++ 338
Γοοδ Λυχκ! 338
Trang 1717
1 Ιντροδυχτιον
Τηε Ωαψ
Τηε βοοκ ισ διϖιδεδ ιν το τηρεε προγρεσσιϖε λεϖελσ Ιν τηε φιρστ βεγιννερ σταγε ωε ωιλλ βε δισχυσσινγ τηε Νετ Φραµεωορκ, Χ# Λανγυαγε Φυνδαµενταλσ ανδ Οβϕεχτ Οριεντεδ Προγραµµινγ
Ιν τηε σεχονδ ιντερµεδιατε σεχτιον ωε ωιλλ γο ιντο δεπτη ωιτη Οβϕεχτ Οριεντεδ χονστρυχτσ συχη ασ ινηεριτανχε, πολψµορπηισµ, αβστραχτ χλασσεσ, ιντερφαχεσ, στρυχτυρεσ, ενυµερατιονσ ανδ εξχεπτιονσ
Ιν τηε τηιρδ ανδ φιναλ αδϖανχεδ σεχτιον ωε ωιλλ δελϖε ιντο ωηατ ισ ρεθυιρεδ το ιµπλεµεντ ρεαλ ωορλδ αππλιχατιονσ υσινγ Χ# ωιτη Βασε Λιβραριεσ, φοχυσινγ ον τοπιχσ συχη ασ Χολλεχτιονσ, ∆ελεγατεσ, Εϖεντσ ανδ Ωινδοωσ
Προγραµµινγ ωιτη α νυµβερ οφ χοντρολσ, ασ ωελλ ασ ∆ατα Αχχεσσ ωιτη Α∆Ο.Νετ, Τηρεαδσ ανδ Στρεαµσ
Τοολσ οφ τηε τραδε
Ουρ εξαµπλεσ ηαϖε βεεν ωριττεν ωιτηιν τηε στανδαρδ Ι∆Ε (ςισυαλ Στυδιο.Νετ) Ωε ρεχοµµενδ τηατ ψου οβταιν τηισ Μιχροσοφτ αρε χυρρεντλψ οφφερινγ ςισυαλ Στυδιο.Νετ 2005 Εξπρεσσ Εδιτιον φορ φρεε, ανδ τηισ ισ αϖαιλαβλε ατ
ηττπ://µσδν.µιχροσοφτ.χοµ/ϖστυδιο/εξπρεσσ/ Αν αλτερνατιϖε οπεν σουρχε Ι∆Ε, Σηαρπ∆εϖελοπ, ισ αϖαιλαβλε φροµ ηττπ://ωωω.ιχσηαρπχοδε.χοµ/ΟπενΣουρχε/Σ∆/ Ιτ ισ αλσο ποσσιβλε το υσε ανψ τεξτ εδιτορ (συχη ασ Νοτεπαδ) το ωριτε τηε Χ# χοδε
Ψου ωιλλ νεεδ το δοωνλοαδ ανδ ινσταλλ τηε Νετ Φραµεωορκ Σ∆Κ, ωηιχη χαν βε οβταινεδ φρεελψ φροµ
ηττπ://µσδν.µιχροσοφτ.χοµ/νετφραµεωορκ/δοωνλοαδσ/ηοωτογετ.ασπ Τηισ ισ νεεδεδ το ρυν ΝΕΤ αππλιχατιονσ ανδ, µορε ιµπορταντλψ φορ υσ, χονταινσ τηε Χ# Χοµπιλερ τηατ ψου ωιλλ νεεδ το χοµπιλε προγραµσ ψου ωριτε
Φιναλλψ, φορ νον−Ωινδοωσ υσερσ, τηε Μονο Προϕεχτ συππλιεσ αν οπεν σουρχε Χ# χοµπιλερ, Νετ ρυντιµε ανδ χλασσ λιβραρψ ιµπλεµεντατιον Φορ µορε ινφορµατιον, σεε ηττπ://ωωω.µονο−προϕεχτ.χοµ/
Τηε χοδε εξαµπλεσ ιν τηισ βοοκ ωερε ωριττεν ανδ τεστεδ ωιτη τηε Νετ Φραµεωορκ ϖερσιον 1.1 ανδ ςισυαλ Στυδιο
2003, βυτ σηουλδ ωορκ φινε ωιτη λατερ ϖερσιονσ Τηεψ ηαϖε νοτ βεεν τεστεδ ωιτη Μονο
Τηε Χ# Λανγυαγε
Χ# (προνουνχεδ Χ−Σηαρπ) ισ νο δουβτ τηε λανγυαγε οφ χηοιχε ιν τηε Νετ ενϖιρονµεντ Ιτ ισ α ωηολε νεω λανγυαγε φρεε οφ τηε βαχκωαρδ χοµπατιβιλιτψ χυρσε ωιτη α ωηολε βυνχη οφ νεω, εξχιτινγ ανδ προµισινγ φεατυρεσ Ιτ ισ αν Οβϕεχτ Οριεντεδ Προγραµµινγ λανγυαγε ανδ ηασ ατ ιτσ χορε, µανψ σιµιλαριτιεσ το ϑαϖα, Χ++ ανδ ςΒ Ιν φαχτ, Χ# χοµβινεσ τηε ποωερ ανδ εφφιχιενχψ οφ Χ++, τηε σιµπλε ανδ χλεαν ΟΟ δεσιγν οφ ϑαϖα ανδ τηε λανγυαγε
σιµπλιφιχατιον οφ ςισυαλ Βασιχ
Trang 18Λικε ϑαϖα, Χ# αλσο δοεσ νοτ αλλοω µυλτιπλε ινηεριτανχε ορ τηε υσε οφ ποιντερσ (ιν σαφε/µαναγεδ χοδε), βυτ δοεσ προϖιδε γαρβαγε µεµορψ χολλεχτιον ατ ρυντιµε, τψπε ανδ µεµορψ αχχεσσ χηεχκινγ Ηοωεϖερ, χοντραρψ το ϑΑςΑ, Χ# µαινταινσ τηε υνιθυε υσεφυλ οπερατιονσ οφ Χ++ λικε οπερατορ οϖερλοαδινγ, ενυµερατιονσ, πρε−προχεσσορ
διρεχτιϖεσ, ποιντερσ (ιν υνµαναγεδ/υν−σαφε χοδε), φυνχτιον ποιντερσ (ιν τηε φορµ οφ δελεγατεσ) ανδ προµισεσ το ηαϖε τεµπλατε συππορτ ιν τηε νεξτ ϖερσιονσ Λικε ςΒ, ιτ αλσο συππορτσ τηε χονχεπτσ οφ προπερτιεσ (χοντεξτ σενσιτιϖε φιελδσ)
Ιν αδδιτιον το τηισ, Χ# χοµεσ υπ ωιτη σοµε νεω ανδ εξχιτινγ φεατυρεσ συχη ασ ρεφλεχτιονσ, αττριβυτεσ, µαρσηαλλινγ, ρεµοτινγ, τηρεαδσ, στρεαµσ, δατα αχχεσσ ωιτη Α∆Ο.Νετ ανδ µορε
Τηε Νετ Αρχηιτεχτυρε ανδ Νετ Φραµεωορκ
Ιν τηε Νετ Αρχηιτεχτυρε ανδ τηε Νετ Φραµεωορκ τηερε αρε διφφερεντ ιµπορταντ τερµσ ανδ χονχεπτσ ωηιχη ωε ωιλλ δισχυσσ ονε βψ ονε:−
Τηε Χοµµον Λανγυαγε Ρυντιµε (ΧΛΡ)
Τηε µοστ ιµπορταντ χονχεπτ οφ τηε Νετ Φραµεωορκ ισ τηε εξιστενχε ανδ φυνχτιοναλιτψ οφ τηε Νετ Χοµµον Λανγυαγε Ρυντιµε (ΧΛΡ), αλσο χαλλεδ Νετ Ρυντιµε φορ σηορτ Ιτ ισ α φραµεωορκ λαψερ τηατ ρεσιδεσ αβοϖε τηε ΟΣ ανδ ηανδλεσ τηε εξεχυτιον οφ αλλ τηε Νετ αππλιχατιονσ Ουρ προγραµσ δον∋τ διρεχτλψ χοµµυνιχατε ωιτη τηε ΟΣ βυτ γο τηρουγη τηε ΧΛΡ
ΜΣΙΛ (Μιχροσοφτ Ιντερµεδιατε Λανγυαγε) Χοδε
Ωηεν ωε χοµπιλε ουρ Νετ Προγραµ υσινγ ανψ Νετ χοµπλιαντ λανγυαγε (συχη ασ Χ#, ςΒ.Νετ ορ Χ++.Νετ) ουρ σουρχε χοδε δοεσ νοτ γετ χονϖερτεδ ιντο τηε εξεχυταβλε βιναρψ χοδε, βυτ το αν ιντερµεδιατε χοδε κνοων ασ ΜΣΙΛ ωηιχη ισ ιντερπρετεδ βψ τηε Χοµµον Λανγυαγε Ρυντιµε ΜΣΙΛ ισ οπερατινγ σψστεµ ανδ ηαρδωαρε ινδεπενδεντ χοδε Υπον προγραµ εξεχυτιον, τηισ ΜΣΙΛ (ιντερµεδιατε χοδε) ισ χονϖερτεδ το βιναρψ εξεχυταβλε χοδε (νατιϖε χοδε) Χροσσ λανγυαγε ρελατιονσηιπσ αρε ποσσιβλε ασ τηε ΜΣΙΛ χοδε ισ σιµιλαρ φορ εαχη Νετ λανγυαγε
Χοδε ιν ανψ Νετ
Λανγυαγε
ΜΣΙΛ Χοδε
Εξεχυταβλε Νατιϖε Χοδε
Λανγυαγε Χοµπιλερ
ϑυστ Ιν Τιµε Χοµπιλερ
Ωινδοωσ ΟΣ Χοµµον Λανγυαγε Ρυντιµε (ΧΛΡ)
Ουρ Νετ Αππλιχατιονσ
Trang 1919
ϑυστ Ιν Τιµε Χοµπιλερσ (ϑΙΤερσ)
Ωηεν ουρ ΙΛ χοµπιλεδ χοδε νεεδσ το βε εξεχυτεδ, τηε ΧΛΡ ινϖοκεσ τηε ϑΙΤ χοµπιλερ, ωηιχη χοµπιλε τηε ΙΛ χοδε το νατιϖε εξεχυταβλε χοδε (.εξε ορ δλλ) τηατ ισ δεσιγνεδ φορ τηε σπεχιφιχ µαχηινε ανδ ΟΣ ϑΙΤερσ ιν µανψ ωαψσ αρε διφφερεντ φροµ τραδιτιοναλ χοµπιλερσ ασ τηεψ χοµπιλε τηε ΙΛ το νατιϖε χοδε ονλψ ωηεν δεσιρεδ; ε.γ., ωηεν α φυνχτιον
ισ χαλλεδ, τηε ΙΛ οφ τηε φυνχτιον∋σ βοδψ ισ χονϖερτεδ το νατιϖε χοδε ϕυστ ιν τιµε Σο, τηε παρτ οφ χοδε τηατ ισ νοτ υσεδ
βψ τηατ παρτιχυλαρ ρυν ισ νεϖερ χονϖερτεδ το νατιϖε χοδε Ιφ σοµε ΙΛ χοδε ισ χονϖερτεδ το νατιϖε χοδε, τηεν τηε νεξτ τιµε ιτ∋σ νεεδεδ, τηε ΧΛΡ ρευσεσ τηε σαµε (αλρεαδψ χοµπιλεδ) χοπψ ωιτηουτ ρε−χοµπιλινγ Σο, ιφ α προγραµ ρυνσ φορ σοµε τιµε (ασσυµινγ τηατ αλλ ορ µοστ οφ τηε φυνχτιονσ γετ χαλλεδ), τηεν ιτ ωον∋τ ηαϖε ανψ ϕυστ−ιν−τιµε περφορµανχε πεναλτψ
Ασ ϑΙΤερσ αρε αωαρε οφ τηε σπεχιφιχ προχεσσορ ανδ ΟΣ ατ ρυντιµε, τηεψ χαν οπτιµιζε τηε χοδε εξτρεµελψ εφφιχιεντλψ ρεσυλτινγ ιν ϖερψ ροβυστ αππλιχατιονσ Αλσο, σινχε α ϑΙΤ χοµπιλερ κνοωσ τηε εξαχτ χυρρεντ στατε οφ εξεχυταβλε χοδε, τηεψ χαν αλσο οπτιµιζε τηε χοδε βψ ιν−λινινγ σµαλλ φυνχτιον χαλλσ (λικε ρεπλαχινγ βοδψ οφ σµαλλ φυνχτιον ωηεν ιτσ χαλλεδ ιν α λοοπ, σαϖινγ τηε φυνχτιον χαλλ τιµε) Αλτηουγη Μιχροσοφτ στατεδ τηατ Χ# ανδ Νετ αρε νοτ χοµπετινγ ωιτη λανγυαγεσ λικε Χ++ ιν εφφιχιενχψ ανδ σπεεδ οφ εξεχυτιον, ϑΙΤερσ χαν µακε ψουρ χοδε εϖεν φαστερ τηαν Χ++ χοδε ιν σοµε χασεσ ωηεν τηε προγραµ ισ ρυν οϖερ αν εξτενδεδ περιοδ οφ τιµε (λικε ωεβ−σερϖερσ)
Τηε Φραµεωορκ Χλασσ Λιβραρψ (ΦΧΛ)
Τηε Νετ Φραµεωορκ προϖιδεσ α ηυγε Φραµεωορκ (ορ Βασε) Χλασσ Λιβραρψ (ΦΧΛ) φορ χοµµον, υσυαλ τασκσ ΦΧΛ χονταινσ τηουσανδσ οφ χλασσεσ το προϖιδε αχχεσσ το Ωινδοωσ ΑΠΙ ανδ χοµµον φυνχτιονσ λικε Στρινγ Μανιπυλατιον, Χοµµον ∆ατα Στρυχτυρεσ, ΙΟ, Στρεαµσ, Τηρεαδσ, Σεχυριτψ, Νετωορκ Προγραµµινγ, Ωινδοωσ Προγραµµινγ, Ωεβ
Προγραµµινγ, ∆ατα Αχχεσσ, ετχ Ιτ ισ σιµπλψ τηε λαργεστ στανδαρδ λιβραρψ εϖερ σηιππεδ ωιτη ανψ δεϖελοπµεντ
ενϖιρονµεντ ορ προγραµµινγ λανγυαγε Τηε βεστ παρτ οφ τηισ λιβραρψ ισ τηεψ φολλοω εξτρεµελψ εφφιχιεντ ΟΟ δεσιγν (δεσιγν παττερνσ) µακινγ τηειρ αχχεσσ ανδ υσε ϖερψ σιµπλε ανδ πρεδιχταβλε Ψου χαν υσε τηε χλασσεσ ιν ΦΧΛ ιν ψουρ προγραµ ϕυστ ασ ψου ωουλδ υσε ανψ οτηερ χλασσ Ψου χαν εϖεν αππλψ ινηεριτανχε ανδ πολψµορπηισµ το τηεσε χλασσεσ
Τηε Χοµµον Λανγυαγε Σπεχιφιχατιον (ΧΛΣ)
Εαρλιερ, ωε υσεδ τηε τερµ ∋.Νετ Χοµπλιαντ Λανγυαγε∋ ανδ στατεδ τηατ αλλ τηε Νετ χοµπλιαντ λανγυαγεσ χαν µακε υσε
οφ ΧΛΡ ανδ ΦΧΛ Βυτ ωηατ µακεσ α λανγυαγε α ∋.Νετ χοµπλιαντ∋ λανγυαγε? Τηε ανσωερ ισ τηε Χοµµον Λανγυαγε Σπεχιφιχατιον (ΧΛΣ) Μιχροσοφτ ηασ ρελεασεδ α σµαλλ σετ οφ σπεχιφιχατιονσ τηατ εαχη λανγυαγε σηουλδ µεετ το θυαλιφψ
ασ α Νετ Χοµπλιαντ Λανγυαγε Ασ ΙΛ ισ α ϖερψ ριχη λανγυαγε, ιτ ισ νοτ νεχεσσαρψ φορ α λανγυαγε το ιµπλεµεντ αλλ τηε
ΙΛ φυνχτιοναλιτψ; ρατηερ, ιτ µερελψ νεεδσ το µεετ α σµαλλ συβσετ οφ ΧΛΣ το θυαλιφψ ασ α Νετ χοµπλιαντ λανγυαγε Τηισ
ισ τηε ρεασον ωηψ σο µανψ λανγυαγεσ (προχεδυραλ ανδ ΟΟ) αρε νοω ρυννινγ υνδερ τηε Νετ υµβρελλα ΧΛΣ βασιχαλλψ αδδρεσσεσ λανγυαγε δεσιγν ισσυεσ ανδ λαψσ δοων χερταιν στανδαρδσ Φορ ινστανχε, τηερε σηουλδν∋τ βε ανψ γλοβαλ φυνχτιον δεχλαρατιονσ, νο ποιντερσ, νο µυλτιπλε ινηεριτανχε ανδ τηινγσ λικε τηατ Τηε ιµπορταντ ποιντ το νοτε ηερε ισ τηατ ιφ ψου κεεπ ψουρ χοδε ωιτηιν τηε ΧΛΣ βουνδαρψ, ψουρ χοδε ισ γυαραντεεδ το βε υσαβλε ιν ανψ οτηερ Νετ λανγυαγε
Trang 20Τηε Χοµµον Τψπε Σψστεµ (ΧΤΣ)
.Νετ αλσο δεφινεσ α Χοµµον Τψπε Σψστεµ (ΧΤΣ) Λικε ΧΛΣ, ΧΤΣ ισ αλσο α σετ οφ στανδαρδσ ΧΤΣ δεφινεσ τηε βασιχ δατα τψπεσ τηατ ΙΛ υνδερστανδσ Εαχη Νετ χοµπλιαντ λανγυαγε σηουλδ µαπ ιτσ δατα τψπεσ το τηεσε στανδαρδ δατα τψπεσ Τηισ µακεσ ιτ ποσσιβλε φορ τηε 2 λανγυαγεσ το χοµµυνιχατε ωιτη εαχη οτηερ βψ πασσινγ/ρεχειϖινγ παραµετερσ
το ανδ φροµ εαχη οτηερ Φορ εξαµπλε, ΧΤΣ δεφινεσ α τψπε, Ιντ32, αν ιντεγραλ δατα τψπε οφ 32 βιτσ (4 βψτεσ) ωηιχη ισ µαππεδ βψ Χ# τηρουγη ιντ ανδ ςΒ.Νετ τηρουγη ιτσ Ιντεγερ δατα τψπε
Γαρβαγε Χολλεχτιον (ΓΧ)
ΧΛΡ αλσο χονταινσ τηε Γαρβαγε Χολλεχτορ (ΓΧ), ωηιχη ρυνσ ιν α λοω−πριοριτψ τηρεαδ ανδ χηεχκσ φορ υν−ρεφερενχεδ, δψναµιχαλλψ αλλοχατεδ µεµορψ σπαχε Ιφ ιτ φινδσ σοµε δατα τηατ ισ νο λονγερ ρεφερενχεδ βψ ανψ ϖαριαβλε/ρεφερενχε, ιτ ρε−χλαιµσ ιτ ανδ ρετυρνσ ιτ το τηε ΟΣ Τηε πρεσενχε οφ α στανδαρδ Γαρβαγε Χολλεχτορ φρεεσ τηε προγραµµερ φροµ κεεπινγ τραχκ οφ δανγλινγ δατα Ασκ ανψ Χ++ προγραµµερ ηοω βιγ α ρελιεφ ιτ ισ!
Τηε Νετ Φραµεωορκ
Τηε Νετ Φραµεωορκ ισ τηε χοµβινατιον οφ λαψερσ οφ ΧΛΡ, ΦΧΛ, ∆ατα ανδ ΞΜΛ Χλασσεσ ανδ ουρ Ωινδοωσ, Ωεβ αππλιχατιονσ ανδ Ωεβ Σερϖιχεσ Α διαγραµ οφ τηε Νετ Φραµεωορκ ισ πρεσεντεδ βελοω φορ βεττερ υνδερστανδινγ
Χ# χοµπαρεδ το Χ++
Ιν τερµσ οφ περφορµανχε ανδ εφφιχιενχψ ιν τηε υσε οφ µεµορψ ανδ οτηερ ρεσουρχεσ, Χ++ δοεσ ουτχλασσ Χ# Βυτ αρε περφορµανχε ανδ σπεεδ τηε ονλψ µεασυρε ωηεν ιτ χοµεσ το χηοοσινγ α δεϖελοπµεντ ενϖιρονµεντ? Νο! Χ++ ισ νο δουβτ α ϖερψ χοµπλεξ, αβστραχτ ανδ λοω−λεϖελ λανγυαγε το προγραµ Ιτ βυρδενσ προγραµµερ ωιτη µανψ
Trang 2121
λανγυαγε χονστρυχτσ, ανδ µανψ οφ τηοσε αρε ϖερψ ρεπετιτιϖε; ε.γ., το ηανδλε τηε δατα ιν µεµορψ ψου χαν ειτηερ υσε ϖαριαβλε, ποιντερ ορ ρεφερενχε Χ# ατ ιτσ χορε ισ ϖερψ σιµπλε ψετ ποωερφυλ µοδερν λανγυαγε ωηιχη ηασ βεεν µαδε ωηιλε κεεπινγ ιν µινδ τηε εξπεριενχε οφ δεϖελοπερσ οϖερ τηε ψεαρσ ανδ τηειρ χυρρεντ νεεδσ Ονε οφ τηε βιγγεστ χονχερνσ ιν τηε δεϖελοπµεντ µαρκετ ισ το µακε προγραµσ τηατ αρε ρε−υσαβλε, µαινταιναβλε, σχαλαβλε, πορταβλε ανδ εασψ το δεβυγ Χ# χοµεσ ριγητ ωιτη τηεσε ισσυεσ Εϖερψ σινγλε Χ++ δεϖελοπερ κνοωσ ηοω διφφιχυλτ ιτ ισ το µαναγε βιγγερ Χ++ προγραµ ανδ δεβυγ τηεµ Ιτ χαν βε α νιγητµαρε το φινδ τηε ρεασον ωηψ α προγραµ χρασηεσ ρανδοµλψ Τηε σολε ρεασον φορ τηισ, το µε, ισ τηε βαχκωαρδσ−χοµπατιβιλιτψ χυρσε Τηεψ µαδε Χ++ ον τηε στρυχτυρε οφ Χ, α στρυχτυρεδ προγραµµινγ λανγυαγε, σο ιτ νεϖερ βεχαµε α τρυε οβϕεχτ οριεντεδ προγραµµινγ λανγυαγε ονλψ, ανδ ιφ τηε χοµπιλερ αλλοωσ µε το γο ιν τηε στρυχτυρεδ ωαψ οφ σολϖινγ προβλεµ, ωηο αρε ψου το µακε µε τακε αν οβϕεχτ οριεντεδ αππροαχη? Αλσο Βϕαρνε Στρουστρυπ, τηε φουνδερ οφ Χ++ σαιδ, ∀Χ++ ισ α µυλτι−παραδιγµ λανγυαγε νοτ ονλψ ΟΟ λανγυαγε∀ Τηε πριµε αδϖανταγεσ οφ υσινγ Χ# ινχλυδε συππορτ φορ τηε χοµµον λανγυαγε ρυντιµε, Φραµεωορκ χλασσ λιβραρψ, ανδ α νεω, χλεαν οβϕεχτ οριεντεδ δεσιγν φρεε οφ τηε βαχκωαρδσ−χοµπατιβιλιτψ χυρσε
Τηε ςισυαλ Στυδιο.Νετ Ι∆Ε
Μιχροσοφτ ςισυαλ Στυδιο.Νετ ισ αν Ιντεγρατεδ ∆εϖελοπµεντ Ενϖιρονµεντ (Ι∆Ε), ωηιχη ισ τηε συχχεσσορ οφ ςισυαλ Στυδιο 6 Ιτ εασεσ τηε δεϖελοπµεντ προχεσσ οφ τηε Νετ Αππλιχατιονσ (ςΧ#.Νετ, ςΒ.Νετ, ςΧ++.Νετ, ϑΣχριπτ.Νετ, ϑ#.Νετ, ΑΣΠ.Νετ, ανδ µορε) Τηε ρεϖολυτιοναρψ αππροαχη ιν τηισ νεω ιµπροϖεδ ϖερσιον ισ τηατ φορ αλλ τηε ςισυαλ Στυδιο.Νετ Χοµπλιαντ Λανγυαγεσ υσε τηε σαµε Ι∆Ε, δεβυγγερ, προϕεχτ ανδ σολυτιον εξπλορερ, χλασσ ϖιεω, προπερτιεσ ταβ, τοολ βοξ, στανδαρδ µενυ ανδ τοολβαρσ Τηε κεψ φεατυρεσ οφ ςισυαλ Στυδιο.Νετ ινχλυδε: Τηε Ι∆Ε προϖιδεσ ϖαριουσ υσεφυλ δεϖελοπµεντ τοολσ συχη ασ:
! Κεψωορδ ανδ σψνταξ ηιγηλιγητινγ
! Ιντελλισενσε (αυτο χοµπλετε), ωηιχη ηελπσ βψ αυτοµατιχαλλψ χοµπλετινγ τηε σψνταξ ασ ψου τψπε α δοτ (.) ωιτη οβϕεχτσ, ενυµερατιονσ, ναµεσπαχεσ ανδ ωηεν ψου υσε τηε Νεω κεψωορδ
! Προϕεχτ ανδ σολυτιον µαναγεµεντ ωιτη σολυτιον εξπλορερ τηατ ηελπσ το µαναγε αππλιχατιονσ χονσιστινγ οφ µυλτιπλε φιλεσ
! Ηελπ βυιλδινγ υσερ ιντερφαχε ωιτη σιµπλε δραγ ανδ δροπ συππορτ
! Προπερτιεσ ταβ τηατ αλλοω ψου το σετ διφφερεντ προπερτιεσ φορ µυλτιπλε ωινδοωσ ανδ ωεβ χοντρολσ
! Στανδαρδ δεβυγγερ τηατ αλλοωσ ψου το δεβυγ ψουρ προγραµ υσινγ πυττινγ βρεακ ποιντσ φορ οβσερϖινγ ρυν−τιµε βεηαϖιορ
Trang 22προϕεχτσ αρε στορεδ ασ ∋.ϖβπροϕ∋ φιλεσ Τηερε αρε σεϖεραλ διφφερεντ κινδσ οφ προϕεχτσ συχη ασ Χονσολε Αππλιχατιονσ, Ωινδοωσ Αππλιχατιονσ, ΑΣΠ.Νετ Ωεβ Αππλιχατιονσ, Χλασσ Λιβραριεσ ανδ µορε
Α σολυτιον ον τηε οτηερ ηανδ ισ α πλαχεηολδερ φορ διφφερεντ λογιχαλλψ ρελατεδ προϕεχτσ τηατ µακε σοµε αππλιχατιον Φορ εξαµπλε, α σολυτιον µαψ χονσιστ οφ αν ΑΣΠ.Νετ Ωεβ Αππλιχατιον προϕεχτ ανδ α Ωινδοωσ Φορµ προϕεχτ Τηε ινφορµατιον φορ α σολυτιον ισ στορεδ ιν ∋.σλν∋ φιλεσ ανδ χαν βε µαναγεδ υσινγ ςισυαλ Στυδιο.Νετ∋σ Σολυτιον Εξπλορερ Σολυτιονσ αρε σιµιλαρ το ςΒ 6∋σ Προϕεχτ Γρουπ ανδ ςΧ++ 6∋σ ωορκσπαχε
Τοολβοξ, Προπερτιεσ ανδ Χλασσ ςιεω Ταβσ
Νοω τηερε ισ α σινγλε τοολβοξ φορ αλλ τηε ςισυαλ Στυδιο.Νετ∋σ λανγυαγεσ ανδ τοολσ Τηε τοολβοξ (υσυαλλψ πρεσεντ ον τηε λεφτ ηανδ σιδε) χονταινσ α νυµβερ οφ χοµµον χοντρολσ φορ ωινδοωσ, ωεβ ανδ δατα αππλιχατιονσ λικε τηε τεξτ βοξ, χηεχκ βοξ, τρεε ϖιεω, λιστ βοξ, µενυσ, φιλε οπεν διαλογ, ετχ
! Τηε Προπερτιεσ Ταβ (υσυαλλψ πρεσεντ ον τηε ριγητ ηανδ σιδε ιν τηε Ι∆Ε) αλλοωσ ψου το σετ τηε προπερτιεσ ον χοντρολσ ανδ φορµσ ωιτηουτ γεττινγ ιντο χοδε
! Τηε Χλασσ ςιεω Ταβ σηοωσ αλλ τηε χλασσεσ τηατ ψουρ προϕεχτ χονταινσ αλονγ ωιτη τηε µετηοδσ ανδ φιελδσ ιν τρεε ηιεραρχηψ Τηισ ισ σιµιλαρ το ςΧ++ 6∋σ χλασσ ϖιεω
Ωριτινγ Ψουρ Φιρστ Ηελλο Ωορλδ Χονσολε Αππλιχατιον ιν Χ#
Ιν τηε φολλοωινγ τεξτ, ωε ωιλλ βυιλδ ουρ φιρστ Χ# αππλιχατιον ωιτη, ανδ τηεν ωιτηουτ, ςισυαλ Στυδιο.Νετ Ωε ωιλλ σεε ηοω το ωριτε, χοµπιλε, ανδ εξεχυτε τηε Χ# αππλιχατιον Λατερ ιν τηε χηαπτερ, ωε ωιλλ εξπλαιν τηε διφφερεντ χονχεπτσ
Trang 2323
Σαϖε τηισ ωιτη ανψ φιλε ναµε ωιτη τηε εξτενσιον ∀.χσ∀ Εξαµπλε: ∋ΜψΦιρστΑππλιχατιον.χσ∋ Το χοµπιλε τηισ φιλε, γο το χοµµανδ προµπτ ανδ ωριτε:
csc MyFirstApplication.cs
Τηισ ωιλλ χοµπιλε ψουρ προγραµ ανδ χρεατε αν εξε φιλε (ΜψΦιρστΑππλιχατιον.εξε) ιν τηε σαµε διρεχτορψ ανδ ωιλλ ρεπορτ ανψ ερρορσ τηατ µαψ οχχυρ
Το ρυν ψουρ προγραµ, τψπε:
MyFirstApplication
Τηισ ωιλλ πριντ Ηελλο Ωορλδ ασ α ρεσυλτ ον ψουρ χονσολε σχρεεν Σιµπλε, ισν∋τ ιτ? Λετ∋σ δο τηε σαµε προχεδυρε ωιτη ςισυαλ Στυδιο.Νετ:
Ωιτη ςισυαλ Στυδιο.Νετ
Σταρτ Μιχροσοφτ ςισυαλ Στυδιο.Νετ ανδ σελεχτ Φιλε − Νεω − Προϕεχτ; τηισ ωιλλ σηοω τηε οπεν φιλε διαλογ Σελεχτ ςισυαλ Χ# Προϕεχτ φροµ Προϕεχτ Τψπε ανδ σελεχτ Χονσολε Αππλιχατιον φροµ Τεµπλατε Ωριτε ΜψΗελλοΩορλδΑππλιχατιον ιν τηε ναµε τεξτ βοξ βελοω ανδ χλιχκ ΟΚ
Trang 24Τηισ ωιλλ σηοω ψου τηε ινιτιαλ δεφαυλτ χοδε φορ ψουρ ηελλο ωορλδ αππλιχατιον:
Ρεµοϖε τηε δοχυµεντατιον χοµµεντσ (λινεσ σταρτινγ ωιτη ///), χηανγε τηε ναµε οφ χλασσ φροµ Χλασσ1 το ΗελλοΩορλδ ανδ ωριτε
Console.WriteLine("Hello World"); in place of //TODO: Add code
Trang 2525
Νοω το χοµπιλε ανδ εξεχυτε ψουρ αππλιχατιον, σελεχτ ∆εβυγ − Σταρτ Ωιτηουτ ∆εβυγγινγ ορ πρεσσ Χτρλ+Φ5 Τηισ ωιλλ οπεν α νεω Χονσολε Ωινδοω ωιτη Ηελλο Ωορλδ ωριττεν ιν ιτ Ονχε ψου πρεσσ ανψ κεψ, τηε ωινδοω ωιλλ χλοσε, τερµινατινγ τηε προγραµ
Υνδερστανδινγ τηε Ηελλο Ωορλδ Αππλιχατιον Χοδε:
Τηε φιρστ λινε οφ ουρ προγραµ (υσινγ Σψστεµ;) αππεαρσ ιν ϖιρτυαλλψ αλλ τηε Χ# προγραµσ Ιτ γιϖεσ υσ αχχεσσ το τηε χορε φυνχτιοναλιτψ οφ ουρ χοµπυτερ σψστεµ Ωε ωιλλ δισχυσσ τηισ α βιτ λατερ Λετ∋σ φιρστ σεε ωηατ τηε σεχονδ λινε
(ναµεσπαχε ΜψΗελλοΩορλδΑππλιχατιον) µεανσ
Ναµεσπαχεσ ιν Χ#
Α Ναµεσπαχε ισ σιµπλψ α λογιχαλ χολλεχτιον οφ ρελατεδ χλασσεσ ιν Χ# Ωε βυνδλε ουρ ρελατεδ χλασσεσ (λικε τηοσε ρελατεδ ωιτη δαταβασε αχτιϖιτψ) ιν σοµε ναµεδ χολλεχτιον χαλλινγ ιτ α ναµεσπαχε (ε.γ., ∆αταΑχτιϖιτψ) Ασ Χ# δοεσ νοτ αλλοω τωο χλασσεσ ωιτη τηε σαµε ναµε το βε υσεδ ιν α προγραµ, τηε σολε πυρποσε οφ υσινγ ναµεσπαχεσ ισ το πρεϖεντ ναµε χονφλιχτσ Τηισ µαψ ηαππεν ωηεν ψου ηαϖε α λαργε νυµβερ οφ χλασσεσ, ασ ισ τηε χασε ιν τηε Φραµεωορκ Χλασσ Λιβραρψ (ΦΧΛ) Ιτ ισ ϖερψ µυχη ποσσιβλε τηατ ουρ Χοννεχτιον Χλασσ ιν ∆αταΑχτιϖιτψ χονφλιχτσ ωιτη τηε Χοννεχτιον Χλασσ οφ ΙντερνετΑχτιϖιτψ Το αϖοιδ τηισ, τηεσε χλασσεσ αρε µαδε παρτ οφ τηειρ ρεσπεχτιϖε ναµεσπαχε Σο τηε φυλλψ θυαλιφιεδ ναµε οφ τηεσε χλασσεσ ωιλλ βε ∆αταΑχτιϖιτψ.Χοννεχτιον ανδ ΙντερνετΑχτιϖιτψ.Χοννεχτιον, ηενχε ρεσολϖινγ ανψ αµβιγυιτψ φορ τηε χοµπιλερ
Σο, ιν τηε σεχονδ λινε οφ ουρ προγραµ ωε αρε δεχλαρινγ τηατ τηε φολλοωινγ χλασσεσ (ωιτηιν { } βλοχκ) αρε παρτ οφ ΜψΗελλοΩορλδΑππλιχατιον ναµεσπαχε
ναµεσπαχε∋
Trang 26using System.Collections;
ιν ορδερ το αχχεσσ τηε χλασσεσ δεφινεδ ιν Χολλεχτιον ναµεσπαχε ωηιχη ισ α συβ/ιντερναλ ναµεσπαχε οφ Σψστεµ ναµεσπαχε
Τηε χλασσ Κεψωορδ
Αλλ οφ ουρ Χ# προγραµσ χονταιν ατ λεαστ ονε χλασσ Τηε Μαιν() µετηοδ ρεσιδεσ ιν ονε οφ τηεσε χλασσεσ Χλασσεσ αρε α χοµβινατιον οφ δατα (φιελδσ) ανδ φυνχτιονσ (µετηοδσ) τηατ χαν βε περφορµεδ ον τηισ δατα ιν ορδερ το αχηιεϖε τηε σολυτιον το ουρ προβλεµ Ωε ωιλλ σεε τηε χονχεπτ οφ χλασσ ιν µορε δεταιλ ιν τηε χοµινγ δαψσ Χλασσεσ ιν Χ# αρε δεφινεδ υσινγ τηε χλασσ κεψωορδ φολλοωεδ βψ τηε ναµε οφ χλασσ
Τηε Μαιν() Μετηοδ
Ιν τηε νεξτ λινε ωε δεφινεδ τηε Μαιν() µετηοδ οφ ουρ προγραµ:
static void Main(string[] args)
Τηισ ισ τηε στανδαρδ σιγνατυρε οφ τηε Μαιν µετηοδ ιν Χ# Τηε Μαιν µετηοδ ισ τηε εντρψ ποιντ οφ ουρ προγραµ, ι.ε., ουρ Χ# προγραµ σταρτσ ιτσ εξεχυτιον φροµ τηε φιρστ λινε οφ Μαιν µετηοδ ανδ τερµινατεσ ωιτη τηε τερµινατιον οφ Μαιν µετηοδ Τηε Μαιν µετηοδ ισ δεσιγνατεδ ασ στατιχ ασ ιτ ωιλλ βε χαλλεδ βψ τηε Χοµµον Λανγυαγε Ρυντιµε (ΧΛΡ)
Trang 2727
ωιτηουτ µακινγ ανψ οβϕεχτ οφ ουρ ΗελλοΩορλδ Χλασσ (ωηιχη ισ τηε δεφινιτιον οφ στατιχ µετηοδσ, φιελδσ ανδ
προπερτιεσ) Τηε µετηοδ ισ αλσο δεχλαρεδ ϖοιδ ασ ιτ δοεσ νοτ ρετυρν ανψτηινγ Μαιν ισ τηε (στανδαρδ) ναµε οφ τηισ µετηοδ, ωηιλε στρινγ [] αργσ ισ τηε λιστ οφ παραµετερσ τηατ χαν βε πασσεδ το µαιν ωηιλε εξεχυτινγ τηε προγραµ φροµ χοµµανδ λινε Ωε ωιλλ σεε τηισ λατερ
Ονε ιντερεστινγ ποιντ ηερε ισ τηατ ιτ ισ λεγιτιµατε το ηαϖε µυλτιπλε Μαιν() µετηοδσ ιν Χ# προγραµ Βυτ, ψου ηαϖε το εξπλιχιτλψ ιδεντιφψ ωηιχη Μαιν µετηοδ ισ τηε εντρψ ποιντ ατ τηε ρυν−τιµε Χ++ ανδ ϑαϖα Προγραµµερσ, τακε νοτε τηατ Μαιν σταρτσ ωιτη χαπιταλ ∋Μ∋ ανδ τηε ρετυρν τψπε ισ ϖοιδ
Πριντινγ ον τηε Χονσολε
Ουρ νεξτ λινε πριντσ Ηελλο Ωορλδ ον τηε Χονσολε σχρεεν:
Console.WriteLine("Hello World");
Ηερε ωε χαλλεδ ΩριτεΛινε(), α στατιχ µετηοδ οφ τηε Χονσολε χλασσ δεφινεδ ιν τηε Σψστεµ ναµεσπαχε Τηισ µετηοδ τακεσ α στρινγ (ενχλοσεδ ιν δουβλε θυοτεσ) ασ ιτσ παραµετερ ανδ πριντσ ιτ ον τηε Χονσολε ωινδοω
Χ#, λικε οτηερ Οβϕεχτ Οριεντεδ λανγυαγεσ, υσεσ τηε δοτ (.) οπερατορ το αχχεσσ τηε µεµβερ ϖαριαβλεσ (φιελδσ) ανδ µετηοδσ οφ α χλασσ Αλσο, βραχεσ () αρε υσεδ το ιδεντιφψ µετηοδσ ιν τηε χοδε ανδ στρινγ λιτεραλσ αρε ενχλοσεδ ιν δουβλε θυοτατιον µαρκσ (∀) Λαστλψ, εαχη στατεµεντ ιν Χ# (λικε Χ, Χ++ ανδ ϑαϖα) ενδσ ωιτη α σεµιχολον (;), αλσο χαλλεδ τηε στατεµεντ τερµινατορ
Χοµµεντσ
Χοµµεντσ αρε τηε προγραµµερ∋σ τεξτ το εξπλαιν τηε χοδε, αρε ιγνορεδ βψ τηε χοµπιλερ ανδ αρε νοτ ινχλυδεδ ιν τηε φιναλ εξεχυταβλε χοδε Χ# υσεσ σψνταξ φορ χοµµεντσ τηατ ισ σιµιλαρ το ϑαϖα ανδ Χ++ Τηε τεξτ φολλοωινγ δουβλε σλαση µαρκσ (// ανψ χοµµεντ) αρε λινε χοµµεντσ Τηε χοµµεντ ενδσ ωιτη τηε ενδ οφ τηε λινε:
// This is my main method of program
static void Main()
/* These lines of text
will be ignored by the compiler */
Trang 28
}
Χ# ιντροδυχεσ ανοτηερ κινδ οφ χοµµεντ χαλλεδ ∋δοχυµεντατιον χοµµεντσ∋ Χ# χαν υσε τηεσε το γενερατε τηε δοχυµεντατιον φορ ψουρ χλασσεσ ανδ προγραµ Τηεσε αρε λινε χοµµεντσ ανδ σταρτ ωιτη τριπλε σλαση µαρκ (///):
/// These are documentation comments
! Τηε τηρεε τψπεσ οφ χοµµεντσ εξιστ ιν Χ#; λινε, βλοχκ ανδ δοχυµεντατιον Τηεσε αρε ιγνορεδ βψ τηε χοµπιλερ ανδ αρε υσεδ ονλψ το ενηανχε τηε ρεαδαβιλιτψ ανδ υνδερστανδαβιλιτψ οφ προγραµ φορ τηε
δεϖελοπερσ
! Ενχλοσινγ ψουρ χλασσ ιν σοµε ναµεσπαχε ισ οπτιοναλ Ψου χαν ωριτε προγραµ ωηερε ψουρ χλασσ ισ νοτ ενχλοσεδ βψ ανψ ναµεσπαχε
! Ιτ ισ νοτ µανδατορψ τηατ Μαιν Μετηοδ οφ προγραµ τακεσ ∋στρινγ [] αργσ∋ ασ παραµετερ Ιτ ισ περφεχτλψ ϖαλιδ το ωριτε Μαιν µετηοδ ασ:
static void Main()
{
}
Trang 2929
Α µορε ιντεραχτιϖε Ηελλο Ωορλδ Αππλιχατιον
Υπ υντιλ νοω, ωε ηαϖε σεεν α ϖερψ στατιχ ηελλο ωορλδ αππλιχατιον τηατ γρεετσ τηε ωηολε ωορλδ ωηεν ιτ ισ εξεχυτεδ Λετσ νοω µακε α µορε ιντεραχτιϖε ηελλο ωορλδ τηατ γρεετσ τηε χυρρεντ υσερ οφ ιτ Τηισ προγραµ ωιλλ ασκ τηε υσερ τηειρ ναµε ανδ ωιλλ γρεετ υσινγ ηισ/ηερ ναµε, λικε ∋Ηελλο Φαραζ∋ ωηεν α υσερ ναµεδ ∋Φαραζ∋ ρυνσ ιτ Λετσ σεε τηε χοδε φιρστ:
static void Main(string[] args)
{
Console.Write("Please enter your name: ");
string name = Console.ReadLine();
Ιν τηε σεχονδ λινε, ωε δεχλαρεδ α ϖαριαβλε οφ τηε τψπε στρινγ ανδ χαλλεδ ιτ ∋ναµε∋ Τηεν, ωε τοοκ α λινε οφ ινπυτ φροµ τηε υσερ τηρουγη τηε ΡεαδΛινε() µετηοδ οφ τηε Χονσολε χλασσ ανδ στορεδ τηε ρεσυλτ ιν τηε ∋ναµε∋ ϖαριαβλε Τηε ϖαριαβλεσ αρε πλαχεηολδερσ ιν µεµορψ φορ στορινγ δατα τεµποραριλψ δυρινγ τηε εξεχυτιον οφ προγραµ ςαριαβλεσ χαν ηολδ διφφερεντ τψπεσ οφ δατα δεπενδινγ ον τηειρ δατα−τψπε, ε.γ., ιντ ϖαριαβλεσ χαν στορε ιντεγερσ ωηιλε στρινγ ϖαριαβλεσ χαν στορε α στρινγ (σεριεσ) οφ χηαραχτερσ Τηε ΡεαδΛινε() µετηοδ οφ τηε Χονσολε χλασσ (χοντραρψ το ΩριτεΛινε()) ρεαδσ α λινε οφ ινπυτ γιϖεν ατ τηε Χονσολε Ωινδοω Ιτ ρετυρνσ τηισ ινπυτ ασ στρινγ δατα, ωηιχη ωε στορεδ ιν ουρ στρινγ ϖαριαβλε ∋ναµε∋
Αυτηορ∋σ Νοτε:
Α στρινγ ισ ιµπλιχιτ δατα−τψπε ιν Χ# χοντραρψ το οτηερ λανγυαγεσ Ιτ σταρτσ ωιτη σµαλλ ∋σ∋
Ιν τηε τηιρδ λινε, ωε πριντεδ τηε ναµε γιϖεν βψ υσερ ιν λινε 2, αλονγ ωιτη σοµε γρεετινγ τεξτ υσινγ τηε ΩριτεΛινε() µετηοδ οφ τηε Χονσολε χλασσ Ηερε ωε υσεδ τηε συβστιτυτιον παραµετερ {0} το στατε ωηερε ιν τηε λινε τηε δατα ιν τηε ϖαριαβλε ∋ναµε∋ σηουλδ βε ωριττεν ωηεν τηε ΩριτεΛινε() µετηοδ ισ χαλλεδ
Console.WriteLine
("Hello {0}, Good Luck in C#", name);
Ωηεν τηε χοµπιλερ φινδσ α συβστιτυτιον παραµετερ, {ν}, ιτ ρεπλαχεσ ιτ ωιτη τηε (ν+1)τη ϖαριαβλε φολλοωινγ τηε στρινγ Τηε στρινγ ισ δελιµιτεδ ωιτη δουβλε θυοτατιον µαρκσ ανδ εαχη παραµετερ ισ σεπαρατεδ βψ α χοµµα Ηενχε, ιν ουρ
Trang 30χασε ωηεν τηε χοµπιλερ φινδσ {0}, ιτ ρεπλαχεσ ιτ ωιτη (0+1)τη, ι.ε., τηε 1στ ϖαριαβλε (∋ναµε∋) φολλοωινγ τηε στρινγ Σο ατ ρυν−τιµε, τηε ΧΛΡ ωιλλ ρεαδ ιτ ασ:
Please enter your name: Faraz
Hello Faraz, Good Luck in C#
Trang 3131
2 Χ# Λανγυαγε Φυνδαµενταλσ
Λεσσον Πλαν
Τοδαψ ωε ωιλλ λεαρν τηε λανγυαγε φυνδαµενταλσ οφ Χ# Ωε ωιλλ εξπλορε τηε δατα τψπεσ ιν Χ#, υσινγ ϖαριαβλεσ, οπερατορσ, φλοω χοντρολ στατεµεντσ λικε ιφ ελσε, λοοπινγ στρυχτυρε ανδ ηοω το υσε αρραψσ
Ασ ωε σαω ιν τηε φιρστ ισσυε, ιµπλιχιτ δατα τψπεσ ιν Νετ χοµπλιαντ λανγυαγεσ αρε µαππεδ το τψπεσ ιν τηε Χοµµον Τψπε Σψστεµ (ΧΤΣ) ανδ ΧΛΣ (Χοµµον Λανγυαγε Σπεχιφιχατιον) Ηενχε, εαχη ιµπλιχιτ δατα τψπε ιν Χ# ηασ ιτσ χορρεσπονδινγ Νετ τψπε Τηε ιµπλιχιτ δατα τψπεσ ιν Χ# αρε:
Trang 32α δατα στρυχτυρε τηατ στορε ιτεµσ ιν α φιρστ ιν φιρστ ουτ (ΦΙΦΟ) φασηιον Ιτ ισ αν αρεα οφ µεµορψ συππορτεδ βψ τηε προχεσσορ ανδ ιτσ σιζε ισ δετερµινεδ ατ τηε χοµπιλε τιµε Α ηεαπ χονσιστσ οφ µεµορψ αϖαιλαβλε το τηε προγραµ ατ ρυν τιµε Ρεφερενχε τψπεσ αρε αλλοχατεδ υσινγ µεµορψ αϖαιλαβλε φροµ τηε ηεαπ δψναµιχαλλψ (δυρινγ τηε εξεχυτιον οφ προγραµ) Τηε γαρβαγε χολλεχτορ σεαρχηεσ φορ νον−ρεφερενχεδ δατα ιν ηεαπ δυρινγ τηε εξεχυτιον οφ προγραµ ανδ ρετυρνσ τηατ σπαχε το Οπερατινγ Σψστεµ
ςαριαβλεσ
∆υρινγ τηε εξεχυτιον οφ α προγραµ, δατα ισ τεµποραριλψ στορεδ ιν µεµορψ Α ϖαριαβλε ισ τηε ναµε γιϖεν το α µεµορψ λοχατιον ηολδινγ α παρτιχυλαρ τψπε οφ δατα Σο, εαχη ϖαριαβλε ηασ ασσοχιατεδ ωιτη ιτ α δατα τψπε ανδ α ϖαλυε
Trang 3333
bool isReady = true;
float percentage = 87.88, average = 43.9;
char digit = '7';
Ιν Χ# (λικε οτηερ µοδερν λανγυαγεσ), ψου µυστ δεχλαρε ϖαριαβλεσ βεφορε υσινγ τηεµ Αλσο, τηερε ισ τηε χονχεπτ οφ
∀∆εφινιτε Ασσιγνµεντ∀ ιν Χ# ωηιχη σαψσ ∀λοχαλ ϖαριαβλεσ (ϖαριαβλεσ δεφινεδ ιν α µετηοδ) µυστ βε ινιτιαλιζεδ βεφορε βεινγ υσεδ∀ Τηε φολλοωινγ προγραµ ωον∋τ χοµπιλε:
static void Main()
Χονσταντ ςαριαβλεσ ορ Σψµβολσ
Χονσταντσ αρε ϖαριαβλεσ ωηοσε ϖαλυεσ, ονχε δεφινεδ, χαν νοτ βε χηανγεδ βψ τηε προγραµ Χονσταντ ϖαριαβλεσ αρε δεχλαρεδ υσινγ τηε χονστ κεψωορδ, λικε:
α χαπιταλ λεττερ Φορ εξαµπλε, ϖαριαβλε ναµεσ φολλοωινγ Χαµελ νοτατιον χουλδ βε:
salary totalSalary
myMathsMarks isPaid
Σοµε τψπιχαλ ναµεσ οφ µετηοδ φολλοωινγ Πασχαλ Νοτατιον αρε
Trang 34GetTotal() Start()
WriteLine() LastIndexOf()
Αλτηουγη ιτ ισ νοτ µανδατορψ το φολλοω τηισ χονϖεντιον, ιτ ισ ηιγηλψ ρεχοµµενδεδ τηατ ψου στριχτλψ φολλοω τηε χονϖεντιον Μιχροσοφτ νο λονγερ συππορτσ Ηυνγαριαν νοτατιον, λικε υσινγ ιΜαρκσ φορ ιντεγερ ϖαριαβλε Αλσο, υσινγ τηε υνδερσχορε _ ιν ιδεντιφιερσ ισ νοτ ενχουραγεδ
// result of addition, subtraction,
// multiplication and modulus operator
int sum=0, difference=0, product=0, modulo=0;
float quotient=0; // result of division
int num1 = 10, num2 = 2; // operand variables
sum = num1 + num2;
difference = num1 - num2;
product = num1 * num2;
Trang 35Console.WriteLine ("Sum of {0} and {1} is {2}", num1, num2, sum);
Console.WriteLine("Difference of {0} and {1} is {2}", num1, num2, difference);
Console.WriteLine("Product of {0} and {1} is {2}", num1, num2, product);
Console.WriteLine("Quotient of {0} and {1} is {2}", num1, num2, quotient);
Console.WriteLine();
Console.WriteLine("Remainder when 3 is divided by {0} is {1}", num2, modulo);
num1++; // increment num1 by 1
num2 ; // decrement num2 by 1
Console.WriteLine("num1 = {0}, num2 = {1}", num1, num2);
Console.WriteLine("Sum of {0} and {1} is {2}", num1, num2, sum);
Ηερε, {0}, {1} ανδ {2} ωιλλ βε ρεπλαχεδ βψ τηε ϖαλυεσ οφ τηε νυµ1, νυµ2 ανδ συµ ϖαριαβλεσ Ιν {ι}, ι σπεχιφιεσ τηατ (ι+1)τη ϖαριαβλε αφτερ δουβλε θυοτεσ ωιλλ ρεπλαχε ιτ ωηεν πριντεδ το τηε Χονσολε Ηενχε, {0} ωιλλ βε ρεπλαχεδ βψ τηε φιρστ ονε, {1} ωιλλ βε ρεπλαχεδ βψ τηε σεχονδ ϖαριαβλε ανδ σο ον
Trang 36double doubleValue = 4.67;
// intValue will be equal to 4
int intValue = (int) doubleValue;
Οφ χουρσε, ωηεν χαστινγ τηερε ισ αλωαψσ α δανγερ οφ σοµε λοσσ οφ πρεχισιον; ιν τηε χασε αβοϖε, ωε ονλψ γοτ τηε 4 οφ τηε οριγιναλ 4.67 Σοµετιµεσ, τηε χαστινγ µαψ ρεσυλτ ιν στρανγε ϖαλυεσ:
Trang 3737
int intValue = 32800;
short shortValue = (short) intValue;
// shortValue would be equal to -32736
ςαριαβλεσ οφ τψπε σηορτ χαν ονλψ τακε ϖαλυεσ ρανγινγ φροµ −32768 το 32767, σο τηε χαστ αβοϖε χαν νοτ ασσιγν 32800
το σηορτςαλυε Ηενχε σηορτςαλυε τοοκ τηε λαστ 16 βιτσ (ασ α σηορτ χονσιστσ οφ 16 βιτσ) οφ τηε ιντεγερ 32800, ωηιχη γιϖεσ τηε ϖαλυε −32736 (σινχε βιτ 16, ωηιχη ρεπρεσεντσ τηε ϖαλυε 32768 ιν αν ιντ, νοω ρεπρεσεντσ −32768) Ιφ ψου τρψ
το χαστ ινχοµπατιβλε τψπεσ λικε:
bool isPaid = false;
int intValue = (int) isPaid;
Ιτ ωον∋τ γετ χοµπιλεδ ανδ τηε χοµπιλερ ωιλλ γενερατε α σψνταξ ερρορ
Ρελατιοναλ Οπερατορσ
Ρελατιοναλ οπερατορσ αρε υσεδ φορ χοµπαρισον πυρποσεσ ιν χονδιτιοναλ στατεµεντσ Χοµµον ρελατιοναλ οπερατορσ ιν Χ# αρε:
int num1 = 5, num2 = 6;
Τηεν:
num1 == num2 // false
num1 != num2 // true
num1 > num2 // false
num1 < num2 // true
num1 <= num2 // true
num1 >= num2 // false
Trang 38bool firstVar = i>3 && j<10;
// firstVar would be false
bool secondVar = i>3 || j<10;
// secondVar would be true
Ιν τηε φιρστ χοµπαρισον: ι>3 && ϕ<10 ωιλλ ρεσυλτ ιν τρυε ονλψ ιφ βοτη τηε χονδιτιονσ ι>3 ανδ ϕ<10 ρεσυλτ ιν τρυε
Ιν τηε σεχονδ χοµπαρισον: ι>3 || ϕ<10 ωιλλ ρεσυλτ ιν τρυε ιφ ανψ οφ τηε χονδιτιονσ ι>3 ανδ ϕ<10 ρεσυλτ ιν τρυε Ψου χαν, οφ χουρσε, υσε βοτη && ανδ || ιν σινγλε στατεµεντ λικε:
bool firstVar = (i>3 && j<10) || (i<7 && j>10) // firstVar would be true
Ιν τηε αβοϖε στατεµεντ ωε υσεδ παρεντηεσισ το γρουπ ουρ χονδιτιοναλ εξπρεσσιονσ ανδ το αϖοιδ ανψ αµβιγυιτψ
Trang 39Φλοω Χοντρολ Ανδ Χονδιτιοναλ Στατεµεντσ
Τηε ιφ ελσε στατεµεντ
Χονδιτιον χηεχκινγ ηασ αλωαψσ βεεν τηε µοστ ιµπορταντ χονστρυχτ ιν ανψ λανγυαγε ριγητ φροµ τηε τιµε οφ τηε ασσεµβλψ λανγυαγε δαψσ Χ# προϖιδεσ χονδιτιοναλ στατεµεντσ ιν τηε φορµ οφ τηε ιφ ελσε στατεµεντ Τηε στρυχτυρε οφ τηισ στατεµεντ ισ:
Trang 40Τηε ελσε χλαυσε αβοϖε ισ οπτιοναλ Α τψπιχαλ εξαµπλε ισ:
if(i==5)
Console.WriteLine("Thank God, I finally became 5.");
Ιν τηε αβοϖε εξαµπλε, τηε χονσολε µεσσαγε ωιλλ βε πριντεδ ονλψ ιφ τηε εξπρεσσιον ι==5 εϖαλυατεσ το τρυε Ιφ ψου ωουλδ λικε το τακε σοµε αχτιον ωηεν τηε χονδιτιον δοεσ νοτ εϖαλυατε το τρυε, τηεν ψου χαν υσε ελσε χλαυσε: