You are on page 1of 389

NGN NG

LP TRNH C#
sch hay
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
Mc Lc
1. Microsoft .NET............................................................................................... 10
Tnh hnh trc khi MS.NET ra i........................................................ 10
Ngun gc ca .NET................................................................................12
Microsoft .NET........................................................................................ 12
Tng !uan................................................................................................ 12
"i#n tr$c .NET %ra&'(ork..................................................................... 1)
*o&&on +anguag' ,unti&'................................................................... 1-
Th .i/n .NET %ra&'(ork...................................................................... 10
1h2t tri3n 4ng 56ng c7i'nt........................................................................ 10
8i9n 5:ch .; MS<+................................................................................... 1=
Ng>n ng? *@............................................................................................ 1A
2. Ngn ng C#.................................................................................................... 20
TBi sao ChDi sE 56ng ng>n ng? *@...........................................................20
*@ 7; ng>n ng? Fn giDn.......................................................................... 20
*@ 7; ng>n ng? hi/n Bi........................................................................... 21
*@ 7; ng>n ng? hng i tGng............................................................. 21
*@ 7; ng>n ng? &Bnh &H......................................................................... 22
*@ 7; ng>n ng? It tJ khKa.........................................................................22
*@ 7; ng>n ng? &o5u7' hKa..................................................................... 22
*@ sH 7; ng>n ng? Ch Li#n......................................................................22
Ng>n ng? *@ .i ng>n ng? kh2c............................................................. 2)
*2c Lc chuMn L: cho chFng trnh....................................................... 2N
*hFng trnh *@ Fn giDn....................................................................... 2-
1h2t tri3n chFng trnh &inh hOa.............................................................)1
*Pu hQi R L;i tSC..................................................................................... )-
. N!n t"ng ngn ng C#.................................................................................. )T
"i3u 5? 7i/u..............................................................................................N0
"i3u 5? 7i/u UPV 5Wng sXn....................................................................... N1
*hOn ki3u 5? 7i/u.....................................................................................N2
*huV3n i ki3u 5? 7i/u........................................................................... N)
8i#n .; hYng............................................................................................ NN
Z2n gi2 tr: U2c :nh cho Li#n................................................................... N-
[Yng......................................................................................................... N0
"i3u 7i/t k9............................................................................................... N=
2
NgnNgLpTrnhC#
"i3u chu\i k] tW.......................................................................................-0
^:nh 5anh.................................................................................................-0
8i3u th4c.................................................................................................. -0
"hoDng tr_ng............................................................................................-1
*Pu 7/nh................................................................................................... -1
1hPn nh2nh kh>ng cK i`u ki/n............................................................... -2
1hPn nh2nh cK i`u ki/n.......................................................................... -)
*Pu 7/nh 7aC............................................................................................. 00
To2n tE..................................................................................................... 0A
Na&'sCac'............................................................................................... =0
*2c chb 5cn Li9n 5:ch............................................................................... A0
*Pu hQi R L;i tSC..................................................................................... A2
#. $%& '(ng )*+ , -.i t/0ng............................................................................A=
^:nh nghda 7C......................................................................................... AA
Thuec tInh truV cSC.................................................................................. T1
Tha& s ca ChFng th4c........................................................................ T2
TBo i tGng........................................................................................... T)
8e khfi 5Wng............................................................................................T)
"hfi tBo Li#n th;nh .i9n.......................................................................... T0
8e khfi 5Wng sao chgC.............................................................................TA
TJ khKa this............................................................................................. TT
SE 56ng c2c th;nh .i9n static...................................................................100
ZOi ChFng th4c static.............................................................................101
SE 56ng Le khfi 5Wng static.................................................................... 101
SE 56ng Le khfi 5Wng Cri.at'..................................................................102
SE 56ng thuec tInh static..........................................................................102
[V i tGng.......................................................................................... 10N
TruV`n tha& s.........................................................................................10=
NBC chng ChFng th4c........................................................................... 112
^Kng gKi 5? 7i/u .i thuec tInh............................................................... 110
Thuec tInh chb Oc................................................................................... 11T
*Pu hQi R L;i tSC..................................................................................... 121
1. 23 t456 7 -6 48n4.......................................................................................... 12-
^ac Li/t hKa .; tng !u2t hKa.................................................................. 120
SW k# thJa................................................................................................ 12T
ThWc thi k# thJa....................................................................................... 12T
ZOi ChFng th4c khfi 5Wng ca 7C cF sf...............................................1)1
ZOi ChFng th4c ca 7C cF sf................................................................ 1)2
)
NgnNgLpTrnhC#
^i`u khi3n truV Uuht.................................................................................1)2
^a hnh.....................................................................................................1))
"i3u a hnh............................................................................................. 1))
1hFng th4c a hnh................................................................................ 1))
TJ khKa n'( .; o.'rri5'......................................................................... 1)=
+C trJu tGng......................................................................................... 1)T
Zc ca tht cD c2c 7Ci 7C jLk'ct........................................................... 1N2
8oUing .; lnLoUing 5? 7i/u.................................................................... 1NN
8oUing 5? 7i/u ngm& :nh........................................................................1NN
lnLoUing ChDi thWc hi/n tng &inh...................................................... 1N-
*2c 7C 7ng nhau.................................................................................... 1N=
*Pu hQi R L;i tSC..................................................................................... 1NT
9. N:+ c4;ng to<n t=.......................................................................................... 1-)
SE 56ng tJ khKa oC'rator......................................................................... 1-)
[\ trG ng>n ng? .NET kh2c.....................................................................1-N
SE 56ng to2n tE........................................................................................ 1-N
To2n tE so s2nh LYng............................................................................... 1-0
To2n tE chuV3n i...................................................................................1-=
*Pu hQi R L;i tSC..................................................................................... 10)
>. C?@ trAc............................................................................................................. 10-
^:nh nghda &et chu tr$c...........................................................................10-
TBo chu tr$c..............................................................................................10A
*hu tr$c 7; &et ki3u gi2 tr:...................................................................... 10A
ZOi Le khfi 5Wng &ac :nh..................................................................... 10T
TBo chu tr$c kh>ng gOi n'(..................................................................... 1=0
*Pu hQi R L;i tSC..................................................................................... 1=2
B. T4(c t4i gi6o 'iCn.......................................................................................... 1=0
ThWc thi giao 5i/n.................................................................................... 1==
ThWc thi nhi`u giao 5i/n.......................................................................... 1A0
Mf reng giao 5i/n.................................................................................... 1A1
"#t hGC c2c giao 5i/n...............................................................................1A1
TruV cSC ChFng th4c giao 5i/n.............................................................. 1A=
Z2n i tGng cho giao 5i/n.................................................................... 1A=
To2n tE is................................................................................................. 1AA
To2n tE as.................................................................................................1T0
Ziao 5i/n i 7SC .i trJu tGng..............................................................1T2
ThWc thi Ch !uV#t giao 5i/n................................................................... 1T)
ThWc thi giao 5i/n tng &inh.................................................................1T=
N
NgnNgLpTrnhC#
+Wa chOn th3 hi/n ChFng th4c giao 5i/n................................................200
nn th;nh .i9n........................................................................................... 200
*Pu hQi R L;i tSC..................................................................................... 20=
D. M"ngE c4F GcE HI tJ+ 40+......................................................................... 211
MDng........................................................................................................ 212
"hai L2o &Dng......................................................................................... 21)
Zi2 tr: &ac :nh....................................................................................... 21N
TruV cSC c2c th;nh Chmn trong &Dng....................................................... 21N
"hfi tBo th;nh Chmn trong &Dng..............................................................210
SE 56ng tJ khKa Cara&s...........................................................................210
*Pu 7/nh for'ach...................................................................................... 21A
MDng a chi`u.......................................................................................... 220
MDng a chi`u cong kIch thc............................................................... 220
MDng a chi`u cK kIch thc kh2c nhau..................................................22N
*huV3n i &Dng..................................................................................... 22=
8e chb &6c............................................................................................... 2)2
8e chb &6c .; ChgC g2n........................................................................... 2)0
SE 56ng ki3u chb s kh2c......................................................................... 2)=
Ziao 5i/n tSC hGC..................................................................................... 2N1
Ziao 5i/n <Enu&'raL7'...................................................................... 2N2
Ziao 5i/n <*o77'ction......................................................................... 2N0
panh s2ch &Dng....................................................................................... 2N=
ThWc thi <*o&CaraL7'........................................................................ 2-1
ThWc thi <*o&Car'r........................................................................... 2-N
[;ng Gi...................................................................................................2-T
Ngqn U#C.................................................................................................. 202
"i3u tJ i3n..............................................................................................20-
[astaL7's.......................................................................................... 200
Ziao 5i/n <pictionarV.........................................................................20=
TSC khKa .; tSC gi2 tr:.....................................................................20T
Ziao 5i/n <pictionarVEnu&'rator....................................................... 2=0
*Pu hQi R L;i tSC..................................................................................... 2=1
1K. $= )L c4@Mi..................................................................................................... 2=-
+C i tGng string................................................................................ 2=0
TBo &et chu\i.......................................................................................... 2=0
TBo &et chu\i 5ong ChFng th4c ToString.............................................2==
Thao t2c tr9n chu\i...................................................................................2=A
T& &et chu\i con................................................................................... 2A-
-
NgnNgLpTrnhC#
*hia chu\i................................................................................................ 2A0
Thao t2c tr9n chu\i 5ong String8ui75'r................................................... 2AA
*2c Li3u th4c !uV t_c............................................................................... 2T0
SE 56ng Li3u th4c !uV t_c !ua 7C ,'g'U................................................2T1
SE 56ng ,'g'U 3 t& tSC hGC................................................................. 2TN
SE 56ng ,'g'U 3 go& nhK&.................................................................. 2T-
SE 56ng *aCtur'*o77'ction...................................................................... 2TA
*Pu hQi R L;i tSC..................................................................................... )01
11. CN c43 O& P@&!n HI s( QiCn......................................................................)0)
rV !uV`n.................................................................................................. )0N
SE 56ng V !uV`n U2c nhSn ChFng th4c 7$c thWc thi............................. )0N
rV !uV`n tdnh........................................................................................... )1N
pong V !uV`n nh thuec tInh................................................................. )1-
Thi#t 7SC th4 tW thi h;nh .i &Dng V !uV`n........................................... )10
Mu7ticasting............................................................................................. )20
SW ki/n..................................................................................................... )2N
*F ch# CuL7ishingi suLscriLing................................................................)2N
SW ki/n .; V !uV`n................................................................................. )2-
*Pu hQi R L;i tSC..................................................................................... )))
12. C<c )*+ cN sR .NET......................................................................................))-
+C i tGng trong .NET %ra&'(ork.................................................... ))-
+C Ti&'r................................................................................................ ))=
+C .` th &6c .; h/ thng.................................................................... )N0
+C Math..................................................................................................)N2
+C thao t2c tSC tin.................................................................................. )N-
+;& .i/c .i tSC tin 5? 7i/u..................................................................... )-1
*Pu hQi R L;i tSC..................................................................................... )02
1. $= )L ngo:i )C.................................................................................................)0N
1h2t sinh .; L_t gi? ngoBi 7/.................................................................... )0-
*Pu 7/nh thro(......................................................................................... )0-
*Pu 7/nh catch..........................................................................................)0=
*Pu 7/nh fina77V........................................................................................ )=)
Nh?ng i tGng ngoBi 7/........................................................................ )=-
TBo ri9ng c2c ngoBi 7/.............................................................................. )=A
1h2t sinh 7Bi ngoBi 7/................................................................................ )A1
*Pu hQi R L;i tSC..................................................................................... )A-
0
NgnNgLpTrnhC#
T46G 24"o
Zi2o trnh sNgn ng Lp trnh C#t Gc Li9n 5:ch .; tng hGC tJu
Programming C#v w'ss' +iL'rtVv jx,'i77V.
C# in 21 Daysv 8ra57'V +.won'sv SyMS.
Windows Forms Programming with C#v Erik 8ro(nv Manning.
MSDN Lirary ! "pri# 2$$2.

S@& /*c
Zi2o trnh sE 56ng &et s !uV c nh sauu
*2c thuSt ng? Gc gii thi/u 7mn mu ti9n sH in nghi%ng.
Mz ngun ca chFng trnh &inh hOa 5ong font Verdana -10.
*2c tJ khKa ca *@ 5ong font Verdana-10, m hoac Verdana-10, bnh thng.
T9n na&sCac'v 7Cv i tGngv ChFng th4cv thuec tInhv sW ki/n... 5ong font Verdana-
10.
"#t !uD ca chFng trnh Uuht ra &;n hnh conso7' 5ong font Courier New-10.
=
NgnNgLpTrnhC#
C4/Nng 1
MTCRUVUWT .NET
T8n4 48n4 tr/*c Q4i MV.NET r6 XYi
Ng@;n g.c cO6 .NET
Microsoft .NET
TZng P@6n
2i3n trAc .NET Wr6G[\orQ
CoGGon L6ng@6g[ R@ntiG[
]CLR^
T4/ HiCn .NET Wr6G[\orQ
P4<t tri_n `ng 'ng c)i[nt
aibn 'cc4 HI MVTL
Ngn ng C#
Tnh hnh trc khi MS.NET ra i
Trong 7dnh .Wc c>ng ngh/ th>ng tin ca th# gii ng;V naVv .i sW Ch2t tri3n 7i9n t6c .; a
5Bng nhht 7; Chmn &`&v c2c h/ i`u h;nhv c2c &>i trng Ch2t tri3nv c2c 4ng 56ng 7i9n t6c ra
i. TuV nhi9nv >i khi .i/c Ch2t tri3n kh>ng ng nhht .; nhht 7; 5o 7Gi Ich kh2c nhau ca
c2c c>ng tV Chmn &`& 7n 7;& Dnh hfng #n nh?ng ngi UPV 5Wng Chmn &`&.
*2ch PV .;i nq& wa.a Gc Sun .i#t rav z cK s4c &Bnh 2ng k3v nK hng ti .i/c chBV
tr9n nhi`u h/ i`u h;nh kh2c nhauv ec 7SC .i Le UE 7] {<nt'7v ,iscv|}. ^ac Li/t 7; wa.a rht
thIch hGC cho .i/c .i#t c2c 4ng 56ng tr9n <nt'rn't. TuV nhi9nv wa.a 7Bi cK hBn ch# .` &at tc
e .; tr9n thWc t# .cn cha th:nh h;nh. Mac 5o Sun *orCoration .; <8M cK MV &Bnh wa.av
nhng Microsoft z 5ong yS1 3 7;& giD& khD nqng Dnh hfng ca wa.a.
^3 7SC trnh tr9n ~'Lv 7Pu naV ngi ta .cn 5ong *Z<i1'r7 .; gmn PV nhht 7; 1[1v &et
ng>n ng? ging nh 1'r7 nhng tc e chBV nhanh hFn. Ta cK th3 tri3n khai 1'r7 tr9n
lniU+inuU haV MS ~in5o(s. TuV nhi9n cK nhi`u ngi kh>ng thIch 5ong 5o LDn thPn ng>n
ng? haV c2c !ui c kh2c thng .; 1'r7 kh>ng Gc Ch2t tri3n thng nhhtv c2c c>ng c6 Gc
UPV 5Wng cho 1'r7 tuV rht &Bnh nhng 5o nhi`u nhK& Ch2t tri3n .; ngi ta kh>ng D& LDo
rYng tFng 7ai ca nK ng;V c;ng tt C hFn.
Microsoft.NET
A
NgnNgLpTrnhC#
Trong gii Ch2t tri3n 4ng 56ng tr9n ~in5o(s ta cK th3 .i#t 4ng 56ng LYng isua7 *v
p'7Chi haV isua7 8asicv PV 7; &et s c>ng c6 Ch Li#n .; &Bnh. Trong K isua7 * 7;
&et ng>n ng? rht &Bnh .; cng rht khK sE 56ng. isua7 8asic th Fn giDn 5 hOcv 5 5ong
nhht n9n rht th>ng 56ng. +] 5o chInh 7; isua7 8asic gi$C ch$ng ta cK th3 .i#t chFng trnh
tr9n ~in5o(s 5 5;ng &; kh>ng cmn thi#t ChDi Li#t nhi`u .` c2ch th4c MS ~in5o(s hoBt
engv ta chb cmn Li#t &et s ki#n th4c cqn LDn ti thi3u .` MS ~in5o(s 7; cK th3 7SC trnh
Gc. po K th'o !uan i3& ca isua7 8asic n9n nK 7i9n k#t .i ~in5o(s 7; i`u tW nhi9n
.; 5 hi3uv nhng hBn ch# 7; isua7 8asic kh>ng ChDi ng>n ng? hng i tGng {jLk'ct
jri'nt'5}.
p'7Chi 7; hSu 5u/ ca TurLo 1asca7 ca 8or7an5. NK cng ging .; tFng i 5 5ong
nh isua7 8asic. p'7Chi 7; &et ng>n ng? hng i tGng. *2c i`u khi3n 5ong tr9n %or&
ca p'7Chi `u Gc tW eng khfi tBo &z ngun. TuV nhi9nv ch4c nqng khfi eng &z ngun
n;V ca p'7Chi >i khi gaC r_c ri khi cK sW can thi/C ca ngi 5ong .;o. Sau n;V khi c>ng
tV 8or7an5 L: L2n .; c2c chuV9n gia UPV 5Wng n9n p'7Chi z chBV !ua L9n Microsoftv .;
p'7Chi kh>ng cn Gc Ch2t tri3n tt n?av ngi ta kh>ng 52& mu t tri3n khai Chmn &`&
.;o p'7Chi. *>ng tV sau n;V z Ch2t tri3n 5ng sDn ChM& wLui75'r {5ong wa.a} kh>ng cn
!uan tP& #n p'7Chi.
TuV isua7 8asic L`n hFn 5o kh>ng cmn ChDi khfi tBo &z ngun trong %or& khi thi#t k#
nhng isua7 8asic cng cK nhi`u khuV#t i3& u
O "h>ng h\ trG thi#t k# hng i tGngv nhht 7; khD nqng thJa k# {inh'ritanc'}.
O Zii hBn .` .i/c chBV nhi`u ti3u trnh trong &et 4ng 56ngv .I 56 ta kh>ng th3 5ong
isua7 8asic 3 .i#t &et S'r.ic' ki3u NT.
O "hD nqng UE 7] 7\i rht V#uv kh>ng thIch hGC trong &>i trng Mu7tii ti'r
O "hK 5ong chung .i ng>n ng? kh2c nh *.
O "h>ng cK ls'r <nt'rfac' thIch hGC cho <nt'rn't.
po isua7 8asic kh>ng thIch hGC cho .i#t c2c 4ng ~'L S'r.'r n9n Microsoft tBo ra yS1
{ycti.' S'r.'r 1ag'}. *2c trang yS1 n;V .Ja cK tag [TM+ .Ja ch4a c2c oBn scriCt
{8ScriCtv wa.aScriCt} nY& 7cn 7en nhau. "hi UE 7] &et trang yS1v n#u 7; tag [TM+ th sH
Gc gfi thng !ua 8ro(s'rv cn c2c scriCt th sH Gc chuV3n th;nh c2c 5ng [TM+ ri gfi
iv ngoBi trJ c2c function haV c2c suL trong yS1 th .: trI c2c scriCt kh2c rht !uan trOng.
"hi &et s ch4c nqng n;o Gc .i#t tt ngi ta 5:ch th;nh ycti.' .; a nK .;o ~'L
S'r.'r. TuV nhi9n . 7] 5o LDo &St n9n c2c <S1 {<nt'rn't S'r.ic' 1ro.i5'r} 7;& &2V ch cho
~'L sit' thng rht 5 at khi c;i ycti.' 7B tr9n &2V ca hO. Ngo;i ra .i/c th2o g c2c
Chi9n LDn ca ycti.' n;V 7; c>ng .i/c rht khKv thng UuV9n 7;& cho y5&inistrator nh4c
mu. Nh?ng ngi z tJng !uDn 7] c2c .'rsion ca p++ tr9n ~in5o(s i`u than Chi`n tBi sao
ChDi qng k] c2c p++ .; nhht 7; chb cK th3 qng k] &et Chi9n LDn ca p++ &; th>i. ; tJ
sDLL &'##t Uuht hi/n t4c 7; :a ng6c p++|
Microsoft.NET
T
NgnNgLpTrnhC#
Sau n;V 3 gi$C cho .i/c 7SC trnh yS1 nhanh hFn th c>ng c6 isua7 <nt'rp'.v &et <pE
{<nt'grat'5 p'.'7oC&'nt En.iron&'nt} ra i. isua7 <nt'rp'. tBo ra c2c p'sign Ti&'
*ontro7s cho .i/c thi#t k# c2c i`u khi3n tr9n ('Lv| Ti#c thaV isua7 <nt'rp'. kh>ng L`n
.?ng 7_& n9n sau &et thi gian th c2c nh; Ch2t tri3n z ri LQ nK.
TK& 7Bi LDn thPn ca yS1 hzV cn &et s khuV#t i3& !uan trOngv nhht 7; khi chBV tr9n
<nt'rn't <nfor&ation S'r.'r .i ~in5o(s NT Nv yS1 kh>ng 2ng tin cSV 7_&.
TK& 7Bi trong gii 7SC trnh th'o Microsoft th .i/c 7SC trnh tr9n 5'sktoC cho #n 7SC trnh
h/ ChPn t2n haV tr9n ('L 7; kh>ng Gc nh:C nh;ng cho 7_&. ^3 chuV3n Gc tJ 7SC trnh
c7i'nt haV 5'sktop #n 7SC trnh ('L 7; &et chang ng 5;i.
Ngun gc .NET
^mu nq& 1TTAv sau khi ho;n tht Chi9n LDn 'rsion N ca <nt'rn't <nfor&ation S'r.'r
{<<S}v c2c ei ng 7SC trnh f Microsoft nhSn thhV hO cn rht nhi`u s2ng ki#n 3 ki/n to;n <<S.
[O L_t mu UPV 5Wng &et ki#n tr$c &i tr9n n`n tDng ] tfng K .; at t9n 7; N'Ut
Z'n'ration ~in5o(s S'r.ic's {NZ~S}.
Sau khi isua7 8asic Gc trnh 7;ng .;o cui 1TTAv 5W 2n k# ti#C &ang t9n isua7 Stu5io
= Gc U2c nhSC .;o NZ~S. ^ei ng *jMMTS gKC .;o &et uni.'rsa7 runti&' cho tht cD
ng>n ng? 7SC trnh chung trong isua7 Stu5iov .; tha& .Ong ca hO cung chC cho c2c ng>n
ng? 7SC trnh ca c2c c>ng tV kh2c 5ong chung 7u>n. *>ng .i/c n;V Gc U$c ti#n &et c2ch
ho;n to;n LI &St &zi cho #n hei ngh: 1rof'ssiona7 p'.'7oC'rsx *onf'r'nc' f jr7a5o .;o
th2ng =2000. ^#n th2ng 112000 th Microsoft z Ch2t h;nh LDn 8'ta 1 ca .NET g& ) da
*p. TInh #n 7$c n;V th Microsoft z 7;& .i/c .i .NET gmn ) nq& riv 5o K LDn 8'ta 1
n;V tFng i .?ng ch_c.
.NET &ang 52ng 5hC ca nh?ng s2ng ki#n z Gc 2C 56ng trc PV nh Cico5' trong
l*Sp 1asca7 cho #n wa.a irtua7 Machin'. *K i`u 7; Microsoft gKC nhat nh?ng s2ng ki#n
ca ngi kh2cv k#t hGC .i s2ng ki#n ca chInh &nh 3 7;& n9n &et sDn ChM& ho;n chbnh
tJ L9n trong 7cn L9n ngo;i. [i/n tBi Microsoft z c>ng L Chi9n LDn r'7'as' ca .NET.
ThSt sW Microsoft z at cGc .;o .NET . th'o th>ng tin ca c>ng tVv z tSC trung A0
s4c &Bnh ca Microsoft 3 nghi9n c4u .; tri3n khai .NET {Lao g& nhPn 7Wc .; t;i chInh }v
tht cD c2c sDn ChM& ca Microsoft sH Gc chuV3n !ua .NET.
Microsoft .NET
Tng quan
Microsoft .NET g& 2 Chmn chInh u %ra&'(ork .; <nt'grat'5 p'.'7oC&'nt En.iron&'nt
{<pE}. %ra&'(ork cung chC nh?ng g cmn thi#t .; cqn LDnv ch? %ra&'(ork cK nghda 7; khung
haV khung cDnh trong K ta 5ong nh?ng hB tmng cF sf th'o &et !ui c nhht :nh 3 c>ng
.i/c Gc tr>i chDV. <pE th cung chC &et &>i trng gi$C ch$ng ta tri3n khai 5 5;ngv .;
nhanh chKng c2c 4ng 56ng 5Wa tr9n n`n tDng .NET. N#u kh>ng cK <pE ch$ng ta cng cK th3
Microsoft.NET
10
NgnNgLpTrnhC#
5ong &et trnh soBn thDo .I nh Not'Ca5 haV Lht c4 trnh soBn thDo .qn LDn n;o .; sE 56ng
co&&an5 7in' 3 Li9n 5:ch .; thWc thiv tuV nhi9n .i/c n;V &ht nhi`u thi gian. Tt nhht 7;
ch$ng ta 5ong <pE Ch2t tri3n c2c 4ng 56ngv .; cng 7; c2ch 5 sE 56ng nhht.
Th;nh Chmn %ra&'(ork 7; !uan trOng nhht .NET 7; ct 7i .; tinh hoa ca &>i trngv
cn <pE chb 7; c>ng c6 3 Ch2t tri3n 5Wa tr9n n`n tDng K th>i. Trong .NET to;n Le c2c ng>n
ng? *@v isua7 * haV isua7 8asic.NET `u 5ong cong &et <pE.
TK& 7Bi Microsoft .NET 7; n`n tDng cho .i/c UPV 5Wng .; thWc thi c2c 4ng 56ng ChPn t2n
th# h/ k# ti#C. 8ao g& c2c 4ng 56ng tJ c7i'nt #n s'r.'r .; c2c 5:ch .6 kh2c. Met s tInh
nqng ca Microsoft .NET cho ChgC nh?ng nh; Ch2t tri3n sE 56ng nh sauu
O Met &> hnh 7SC trnh cho ChgC nh; Ch2t tri3n UPV 5Wng c2c 4ng 56ng 5:ch .6 ('L .;
4ng 56ng c7i'nt .i EUt'nsiL7' MarkuC +anguag' {M+}.
O TSC hGC 5:ch .6 M+ ~'Lv nh Microsoft .NET MV S'r.ic's cho ChgC nh; Ch2t
tri3n Fn giDn .; tIch hGC ngi 5ong kinh nghi/&.
O *ung chC c2c s'r.'r Ch6c .6 Lao g&u ~in5o(s 2000v S+ S'r.'rv .; 8iTa7k
S'r.'rv tht cD i`u tIch hGCv hoBt engv .; !uDn 7] c2c 5:ch .6 M+ ~'L .; c2c 4ng
56ng.
O *2c Chmn &`& c7i'nt nh ~in5o(s 1 .; ~in5o(s *E gi$C ngi Ch2t tri3n ChPn
Chi sPu .; thuV#t Ch6c ngi 5ong kinh nghi/& th>ng !ua c2c 5ng thi#t L:.
O Nhi`u c>ng c6 h\ trG nh isua7 Stu5io .NETv 3 Ch2t tri3n c2c 5:ch .6 ~'L M+v
4ng 56ng tr9n n`n ~in5o(s haV n`n ('L &et c2ch 53 5;ng .; hi/u !uD.
Kin trc .NET !ra"#$ork
.NET %ra&'(ork 7; &et C7atfor& &i 7;& Fn giDn .i/c Ch2t tri3n 4ng 56ng trong &>i
trng ChPn t2n ca <nt'rn't. .NET %ra&'(ork Gc thi#t k# mV 3 2C 4ng th'o !uan
i3& sauu
O ^3 cung chC &et &>i trng 7SC trnh hng i tGng .?ng ch_cv trong K &z
ngun i tGng Gc 7u tr? .; thWc thi &et c2ch c6c Le. ThWc thi c6c Le nhng
Gc ChPn t2n tr9n <nt'rn'tv hoac thWc thi tJ Ua.
O ^3 cung chC &et &>i trng thWc thi &z ngun &; ti thi3u Gc .i/c Kng gKi Chmn
&`& .; sW tranh chhC .` Chi9n LDn.
O ^3 cung chC &et &>i trng thWc thi &z ngun &; D& LDo .i/c thWc thi an to;n &z
ngunv Lao g& cD .i/c &z ngun Gc tBo Lfi hzng th4 La haV Lht c4 hzng n;o &;
tuPn th th'o ki#n tr$c .NET.
O ^3 cung chC &et &>i trng thWc thi &z ngun &; 7oBi LQ Gc nh?ng 7\i thWc hi/n
c2c scriCt haV &>i trng th>ng 5:ch.
O ^3 7;& cho nh?ng ngi Ch2t tri3n cK kinh nghi/& .?ng ch_c cK th3 n_& .?ng nhi`u
ki3u 4ng 56ng kh2c nhau. Nh 7; tJ nh?ng 4ng 56ng tr9n n`n ~in5o(s #n nh?ng
4ng 56ng 5Wa tr9n ('L.
Microsoft.NET
11
NgnNgLpTrnhC#
O ^3 UPV 5Wng tht cD c2c th>ng tin 5Wa tri9n ti9u chuMn c>ng nghi/C 3 D& LDo rYng
&z ngun tr9n .NET cK th3 tIch hGC .i Lht c4 &z ngun kh2c.
.NET %ra&'(ork cK hai th;nh Chmn chInhu *o&&on +anguag' ,unti&' {*+,} .; th
.i/n 7C .NET %ra&'(ork. *+, 7; n`n tDng ca .NET %ra&'(ork. *h$ng ta cK th3 hi3u
runti&' nh 7; &et ag'nt !uDn 7] &z ngun khi nK Gc thWc thiv cung chC c2c 5:ch .6 ct 7i
nhu !uDn 7] Le nhv !uDn 7] ti3u trnhv .; !uDn 7] tJ Ua. Ngo;i ra nK cn th$c MV .i/c sE
56ng ki3u an to;n .; c2c hnh th4c kh2c ca .i/c chInh U2c &z ngunv D& LDo cho .i/c thWc
hi/n Gc LDo &St .; &Bnh &H. ThSt .SVv kh2i ni/& !uDn 7] &z ngun 7; nguV9n 7] n`n tDng
ca runti&'. Mz ngun &; Ich ti runti&' th Gc Li#t nh 7; &z ngun Gc !uDn 7]
{&anag'5 co5'}. Trong khi K &z ngun &; kh>ng cK Ich ti runti&' th Gc Li#t nh &z
ngun kh>ng Gc !uDn 7] {un&anag'5 co5'}.
Th .i/n 7Cv &et th;nh Chmn chInh kh2c ca .NET %ra&'(ork 7; &et tSC hGC hng i
tGng ca c2c ki3u 5? 7i/u Gc 5ong 7Biv nK cho ChgC ch$ng ta cK th3 Ch2t tri3n nh?ng 4ng
56ng tJ nh?ng 4ng 56ng truV`n thng co&&an5i7in' haV nh?ng 4ng 56ng cK giao 5i/n
hOa {Zl<} #n nh?ng 4ng 56ng &i nhht Gc cung chC Lfi yS1.NETv nh 7; ~'L %or& .;
5:ch .6 M+ ~'L.
&nh 1(1) M t* +,+ th-nh ph.n trong (N/0 Fram'wor1(
Microsoft.NET
12
NgnNgLpTrnhC#
%o""on &anguag# 'unti"# (%&')
Nh z ` cSC th *+, thWc hi/n !uDn 7] Le nhv !uDn 7] thWc thi ti3u trnhv thWc thi &z
ngunv U2c nhSn &z ngun an to;nv Li9n L:ch .; c2c 5:ch .6 h/ thng kh2c. Nh?ng ac tInh
tr9n 7; n`n tDng cF LDn cho nh?ng &z ngun Gc !uDn 7] chBV tr9n *+,.
po ch$ trOng #n LDo &Stv nh?ng th;nh Chmn Gc !uDn 7] Gc chC nh?ng &4c e
!uV`n hBn kh2c nhauv Ch6 thuec .;o nhi`u V#u t nguV9n thV ca ch$ng nhu 7i9n !uan #n
<nt'rn'tv h/ thng &Bng trong nh; &2Vv haV &et &2V tInh c6c Le. ^i`u n;V cK nghda rYngv
&et th;nh Chmn Gc !uDn 7] cK th3 cK haV kh>ng cK !uV`n thWc hi/n &et thao t2c truV cSC
tSC tinv thao t2c truV cSC r'gistrVv haV c2c ch4c nqng nhBV cD& kh2c.
*+, th$c MV .i/c &z ngun thWc hi/n .i/c truV cSC Gc LDo &St. I 56v ngi sE 56ng
gii hBn rYng .i/c thWc thi nh$ng .;o trong &et trang ('L cK th3 chBV Gc hoBt hnh tr9n
&;n hnh haV h2t &et LDn nhBcv nhng kh>ng th3 truV cSC Gc 5? 7i/u ri9ng tv tSC tin h/
thngv haV truV cSC &Bng. po Kv ac tInh LDo &St ca *+, cho ChgC nh?ng Chmn &`& Kng
gKi tr9n <n'rn't cK nhi`u ac tInh &; kh>ng Dnh hfng #n .i/c LDo &St h/ thng.
*+, cn th$c MV cho &z ngun Gc thWc thi &Bnh &H hFn LYng .i/c thWc thi &z ngun
chInh U2c .; sW U2c nhSn &z ngun. N`n tDng ca .i/c thWc hi/n n;V 7; *o&&on TVC'
SVst'& {*TS}. *TS D& LDo rYng nh?ng &z ngun Gc !uDn 7] th Gc tW &> tD {s'7fi
5'scriLing}. SW kh2c nhau gi?a Microsoft .; c2c trnh Li9n 5:ch ng>n ng? ca hzng th4 La 7;
.i/c tBo ra c2c &z ngun Gc !uDn 7] cK th3 thIch hGC .i *TS. ^i`u n;V th &z ngun Gc
!uDn 7] cK th3 sE 56ng nh?ng ki3u Gc !uDn 7] kh2c .; nh?ng th3 hi/nv trong khi th$c MV
nghi9& ngat .i/c sE 56ng ki3u 5? 7i/u chInh U2c .; an to;n.
Th9& .;o Kv &>i trng Gc !uDn 7] ca runti&' sH thWc hi/n .i/c tW eng UE 7] 7aVout
ca i tGng .; !uDn 7] nh?ng tha& chi#u #n i tGngv giDi ChKng ch$ng khi ch$ng kh>ng
cn Gc sE 56ng n?a. i/c !uDn 7] Le nh tW eng n;V cn giDi !uV#t hai 7\i chung ca 4ng
56ngu thi#u Le nh .; tha& chi#u Le nh kh>ng hGC 7/.
Trong khi runti&' Gc thi#t k# cho nh?ng Chmn &`& ca tFng 7aiv nK cng h\ trG cho
ChPn &`& ng;V naV .; trc PV. "hD nqng hoBt eng !ua 7Bi gi?a &z ngun Gc !uDn 7] .;
&z ngun kh>ng Gc !uDn 7] cho ChgC ngi Ch2t tri3n ti#C t6c sE 56ng nh?ng th;nh Chmn
cmn thi#t ca *jM .; p++.
,uti&' Gc thi#t k# 3 cDi ti#n hi/u suht thWc hi/n. Mac 5o *+, cung chC nhi`u c2c ti9u
chuMn 5:ch .6 runti&'v nhng &z ngun Gc !uDn 7] kh>ng Lao gi Gc 5:ch. *K &et ac
tInh gOi 7; wustiiniTi&' {w<T} Li9n 5:ch tht cD nh?ng &z ngun Gc !uDn 7] .;o trong ng>n
ng? &2V ca h/ thng .;o 7$c &; nK Gc thWc thi. "hi Kv trnh !uDn 7] Le nh UKa LQ
nh?ng ChPn &Dnh Le nh n#u cK th3 Gc .; gia tqng tha& chi#u Le nh c6c Lev .; k#t !uD
gia tqng hi/u !uD thWc thi.
Microsoft.NET
1)
NgnNgLpTrnhC#
Th *i+n ,- .NET !ra"#$ork
Th .i/n 7C .NET %ra&'(ork 7; &et tSC hGC nh?ng ki3u 5? 7i/u Gc 5ong 7Bi .; Gc
k#t hGC chat chH .i *o&&on +anguag' ,unti&'. Th .i/n 7C 7; hng i tGng cung chC
nh?ng ki3u 5? 7i/u &; &z ngun Gc !uDn 7] ca ch$ng ta cK th3 5cn Uuht. ^i`u n;V kh>ng
chb 7;& cho nh?ng ki3u 5? 7i/u ca .NET %ra&'(ork 5 sE 56ng &; cn 7;& giD& thi gian
7i9n !uan #n .i/c hOc ac tInh &i ca .NET %ra&'(ork. Th9& .;o Kv c2c th;nh Chmn ca
c2c hzng th4 La cK th3 tIch hGC .i nh?ng 7C trong .NET %ra&'(ork.
*ng nh &ong Gi ca ngi Ch2t tri3n .i th .i/n 7C hng i tGngv ki3u 5? 7i/u .
NET %ra&'(ork cho ChgC ngi Ch2t tri3n thi#t 7SC nhi`u &4c e th>ng 56ng ca .i/c 7SC
trnhv Lao g& c2c nhi/& .6 nhu !uDn 7] chu\iv thu thSC haV chOn 7Oc 5? 7i/uv k#t ni .i cF
cf 5? 7i/uv .; truV cSC tSC tin. Ngo;i nh?ng nhi/& .6 th>ng 56ng tr9n. Th .i/n 7C cn a
.;o nh?ng ki3u 5? 7i/u 3 h\ trG cho nh?ng k:ch LDn Ch2t tri3n chuV9n Li/t kh2c. I 56 ngi
Ch2t tri3n cK th3 sE 56ng .NET %ra&'(ork 3 Ch2t tri3n nh?ng ki3u 4ng 56ng .; 5:ch .6 nh
sauu
ng 56ng *onso7'
ng 56ng giao 5i/n Zl< tr9n ~in5o(s {~in5o(s %or&s}
ng 56ng yS1.NET
p:ch .6 M+ ~'L
p:ch .6 ~in5o(s
Trong K nh?ng 7C ~in5o(s %or&s cung chC &et tSC hGC 7n c2c ki3u 5? 7i/u nhY&
7;& Fn giDn .i/c Ch2t tri3n c2c 4ng 56ng Zl< chBV tr9n ~in5o(s. *n n#u nh .i#t c2c 4ng
56ng yS1.NET th cK th3 sE 56ng c2c 7C ~'L %or&s trong th .i/n .NET %ra&'(ork.
.h/t tri0n 1ng 23ng %,i#nt
Nh?ng 4ng 56ng c7i'nt cng gmn .i nh?ng 4ng 56ng ki3u truV`n thng Gc 7SC trnh
5Wa tr9n ~in5o(s. ^PV 7; nh?ng ki3u 4ng 56ng hi3n th: nh?ng cEa s haV nh?ng for& tr9n
5'sktop cho ChgC ngi 5ong thWc hi/n &et thao t2c haV nhi/& .6 n;o K. Nh?ng 4ng 56ng
c7i'nt Lao g& nh?ng 4ng 56ng nh UE 7] .qn LDnv UE 7] LDng tInhv nh?ng 4ng 56ng trong
7dnh .Wc thFng &Bi nh c>ng c6 nhSC 7i/uv c>ng c6 tBo L2o c2o...Nh?ng 4ng 56ng c7i'nt n;V
thng sE 56ng nh?ng cEa sv &'nuv too7Larv Lutton haV c2c th;nh Chmn Zl< kh2cv .; ch$ng
thng truV cSC c2c t;i nguV9n c6c Le nh 7; c2c tSC tin h/ thngv c2c thi#t L: ngoBi .i nh
&2V in.
Met 7oBi 4ng 56ng c7i'nt kh2c .i 4ng 56ng truV`n thng nh tr9n 7; ycti.' contro7
{hi/n naV nK Gc thaV th# Lfi c2c ~in5o(s %or& contro7} Gc nh$ng .;o c2c trang ('L
tr9n <nt'rn't. *2c 4ng 56ng n;V cng ging nh nh?ng 4ng 56ng c7i'nt kh2c 7; cK th3 truV cSC
t;i nguV9n c6c Le.
Trong !u2 kh4v nh?ng nh; Ch2t tri3n cK th3 tBo c2c 4ng 56ng sE 56ng ** th>ng !ua
k#t ni .i M%* hoac sE 56ng &>i trng Ch2t tri3n 4ng 56ng nhanh {,ypu ,aCi5
Microsoft.NET
1N
NgnNgLpTrnhC#
yCC7ication p'.'7oC&'nt}. .NET %ra&'(ork tIch hGC 5i/n &Bo ca nh?ng sDn ChM& th;nh
&et. M>i trng Ch2t tri3n c :nh 7;& Fn giDn &Bnh &H sW Ch2t tri3n ca 4ng 56ng c7i'nt.
Nh?ng 7C .NET %ra&'(ork ch4a trong .NET %ra&'(ork Gc thi#t k# cho .i/c sE 56ng
Ch2t tri3n c2c Zl<. ^i`u n;V cho ChgC ngi Ch2t tri3n nhanh chKng .; 5 5;ng tBo c2c cEa
sv buttonv &'nuv too7Larv .; c2c th;nh Chmn kh2c trong c2c 4ng 56ng Gc .i#t Ch6c .6 cho
7dnh .Wc thFng &Bi. I 56 nhv .NET cung chC nh?ng thuec tInh Fn giDn 3 hi/u chbnh c2c
hi/u 4ng .isua7 7i9n !uan #n for&. Trong .;i trng hGC h/ i`u h;nh kh>ng h\ trG .i/c
thaV i nh?ng thuec tInh n;V &et c2ch trWc ti#Cv .; trong trng hGC n;V .NET tW eng tBo
7Bi for&. ^PV 7; &et trong nhi`u c2ch &; .NET tIch hGC .i/c Ch2t tri3n giao 5i/n 7;& cho &z
ngun Fn giDn .; &Bnh &H hFn.
"h>ng ging nh ycti.' contro7v ~in5o(s %or& contro7 cK sW truV cSC gii hBn #n
&2V ca ngi sE 56ng. ^i`u n;V cK nghda rYng &; ngun thWc thi nh: ChPn cK th3 truV cSC
&et .;i t;i nguV9n trong &2V ca ngi sE 56ng {nh c2c th;nh Chmn hOa haV &et s tSC
tin Gc gii hBn} &; kh>ng th3 truV cSC #n nh?ng t;i nguV9n kh2c. NguV9n nhPn 7; sW LDo
&St truV cSC ca &z ngun. +$c n;V c2c 4ng 56ng Gc c;i at tr9n &2V ngi 5ong cK th3
an to;n 3 a 79n <nt'rn't
4i5n 26ch *7 MS8&
Trong .NET %ra&'(orkv chFng trnh kh>ng Gc Li9n 5:ch .;o c2c tSC tin thWc thi &;
thaV .;o K ch$ng Gc Li9n 5:ch .;o nh?ng tSC tin trung gian gOi 7; Microsoft <nt'r&'5iat'
+anguag' {MS<+}. Nh?ng tSC tin MS<+ Gc tBo ra tJ *@ cng tFng tW nh c2c tSC tin MS<+
Gc tBo ra tJ nh?ng ng>n ng? kh2c ca .NETv C7atfor& f PV kh>ng cmn Li#t ng>n ng? ca
&z ngun. ^i`u !uan trOng chInh V#u ca *+, 7; chung {co&&on}v cong &et runti&' h\ trG
Ch2t tri3n trong *@ cng nh trong 8.NET.
Mz ngun *@ Gc Li9n 5:ch .;o MS<+ khi ch$ng ta Lui75 Crok'ct. Mz MS<+ n;V Gc
7u .;o trong &et tSC tin tr9n da. "hi ch$ng ta chBV chFng trnhv th MS<+ Gc Li9n 5:ch
&et 7mn n?av sE 56ng trnh Li9n 5:ch wusti<niTi&' {w<T}. "#t !uD 7; &z &2V Gc thWc thi Lfi
Le UE 7] ca &2V.
Trnh Li9n 5:ch w<T ti9u chuMn th thWc hi/n th'o V9u cmu. "hi &et ChFng th4c Gc gOiv
trnh Li9n 5:ch w<T ChPn tIch MS<+ .; tBo ra sDn ChM& &z &2V cK hi/u !uD caov &z n;V cK th3
chBV rht nhanh. Trnh Li9n 5:ch w<T th>ng &inh 3 nhSn ra khi &et &z z Gc Li9n 5:chv
5o .SV khi 4ng 56ng chBV th .i/c Li9n 5:ch chb UDV ra khi cmn thi#tv t4c 7; chb Li9n 5:ch &z
MS<+ cha Li9n 5:ch ra &z &2V. "hi K &et 4ng 56ng .NET thWc hi/nv ch$ng cK Uu hng 7;
chBV nhanh .; nhanh hFn n?av cng nh 7; nh?ng &z ngun Gc Li9n 5:ch ri th Gc 5ong
7Bi.
po tht cD c2c ng>n ng? .NET %ra&'(ork cong tBo ra sDn ChM& MS<+ ging nhauv n9n k#t
!uD 7; &et i tGng Gc tBo ra tJ ng>n ng? n;V cK th3 Gc truV cSC haV Gc 5cn Uuht tJ
Microsoft.NET
1-
NgnNgLpTrnhC#
&et i tGng ca ng>n ng? kh2c trong .NET. I 56v ngi Ch2t tri3n cK th3 tBo &et 7C cF
sf trong 8.NET .; sau K 5cn Uuht nK trong *@ &et c2ch 5 5;ng.
Ng9n ng: %;
Ng>n ng? *@ kh2 Fn giDnv chb khoDng A0 tJ khKa .; hFn &i &hV ki3u 5? 7i/u Gc
UPV 5Wng sXn. TuV nhi9nv ng>n ng? *@ cK ] nghda cao khi nK thWc thi nh?ng kh2i ni/& 7SC
trnh hi/n Bi. *@ Lao g& tht cD nh?ng h\ trG cho chu tr$cv th;nh Chmn co&Con'ntv 7SC trnh
hng i tGng. Nh?ng tInh chht K hi/n 5i/n trong &et ng>n ng? 7SC trnh hi/n Bi. ;
ng>n ng? *@ hei nh?ng i`u ki/n nh .SVv hFn n?a nK Gc UPV 5Wng tr9n n`n tDng ca
hai ng>n ng? &Bnh nhht 7; * .; wa.a.
Ng>n ng? *@ Gc Ch2t tri3n Lfi ei ng k s ca Microsoftv trong K ngi 5cn mu 7;
yn5'rs ['k7sL'rg .; Scott ~i7ta&uth. *D hai ngi n;V i`u 7; nh?ng ngi ni ti#ngv trong
K yn5'rs ['k7sL'rg Gc Li#t #n 7; t2c giD ca TurLo 1asca7v &et ng>n ng? 7SC trnh 1*
Ch Li#n. ; >ng 4ng mu nhK& thi#t k# 8or7an5 p'7Chiv &et trong nh?ng th;nh c>ng mu
ti9n ca .i/c UPV 5Wng &>i trng Ch2t tri3n tIch hGC {<pE} cho 7SC trnh c7i'nts'r.'r.
1hmn ct 7i haV cn gOi 7; tr2i ti& ca Lht c4 ng>n ng? 7SC trnh hng i tGng 7; sW h\
trG ca nK cho .i/c :nh nghda .; 7;& .i/c .i nh?ng 7C. Nh?ng 7C th :nh nghda nh?ng
ki3u 5? 7i/u &iv cho ChgC ngi Ch2t tri3n &f reng ng>n ng? 3 tBo &> hnh tt hFn 3 giDi
!uV#t .hn `. Ng>n ng? *@ ch4a nh?ng tJ khKa cho .i/c khai L2o nh?ng ki3u 7C i tGng
&i .; nh?ng ChFng th4c haV thuec tInh ca 7Cv .; cho .i/c thWc thi Kng gKiv k# thJav .;
a hnhv La thuec tInh cF LDn ca Lht c4 ng>n ng? 7SC trnh hng i tGng.
Trong ng>n ng? *@ &Oi th4 7i9n !uan #n khai L2o 7C i`u Gc t& thhV trong Chmn
khai L2o ca nK. ^:nh nghda &et 7C trong ng>n ng? *@ kh>ng i hQi ChDi chia ra tSC tin
h'a5'r .; tSC tin ngun ging nh trong ng>n ng? *. [Fn th# n?av ng>n ng? *@ h\ trG
ki3u M+v cho ChgC chn c2c tag M+ 3 Ch2t sinh tW eng c2c 5ocu&'nt cho 7C.
*@ cng h\ trG giao 5i/n interfacev nK Gc U'& nh &et ca& k#t .i &et 7C cho nh?ng
5:ch .6 &; giao 5i/n !uV :nh. Trong ng>n ng? *@v &et 7C chb cK th3 k# thJa tJ 5uV nhht
&et 7C chav t4c 7; kh>ng cho a k# thJa nh trong ng>n ng? *v tuV nhi9n &et 7C cK th3
thWc thi nhi`u giao 5i/n. "hi &et 7C thWc thi &et giao 5i/n th nK sH h4a 7; nK sH cung chC
ch4c nqng thWc thi giao 5i/n.
Trong ng>n ng? *@v nh?ng chu tr$c cng Gc h\ trGv nhng kh2i ni/& .` ng? nghda ca
nK thaV i kh2c .i *. Trong *@v &et chu tr$c Gc gii hBnv 7; ki3u 5? 7i/u nhQ gOnv .;
khi tBo th3 hi/n th nK V9u cmu It hFn .` h/ i`u h;nh .; Le nh so .i &et 7C. Met chu tr$c
th kh>ng th3 k# thJa tJ &et 7C haV Gc k# thJa nhng &et chu tr$c cK th3 thWc thi &et
giao 5i/n.
Ng>n ng? *@ cung chC nh?ng ac tInh hng th;nh Chmn {co&Con'ntiori'nt'5}v nh 7;
nh?ng thuec tInhv nh?ng sW ki/n. +SC trnh hng th;nh Chmn Gc h\ trG Lfi *+, cho ChgC
7u tr? &'ta5ata .i &z ngun cho &et 7C. M'ta5ata &> tD cho &et 7Cv Lao g& nh?ng
Microsoft.NET
10
NgnNgLpTrnhC#
ChFng th4c .; nh?ng thuec tInh ca nKv cng nh nh?ng sW LDo &St cmn thi#t .; nh?ng
thuec tInh kh2c. Mz ngun ch4a Wng nh?ng 7ogic cmn thi#t 3 thWc hi/n nh?ng ch4c nqng
ca nK.. po .SVv &et 7C Gc Li9n 5:ch nh 7; &et khi s'7ficontain'5v n9n &>i trng
hosting Li#t Gc c2ch Oc &'ta5ata ca &et 7C .; &z ngun cmn thi#t &; kh>ng cmn nh?ng
th>ng tin kh2c 3 sE 56ng nK.
Met 7u ] cui cong .` ng>n ng? *@ 7; ng>n ng? n;V cng h\ trG .i/c truV cSC Le nh
trWc ti#C sE 56ng ki3u con trQ ca * .; tJ khKa cho 5hu ngoac trong to2n tE. *2c &z
ngun n;V 7; kh>ng an to;n {unsaf'}. ; Le giDi ChKng Le nh tW eng ca *+, sH kh>ng
thWc hi/n .i/c giDi ChKng nh?ng i tGng Gc tha& chi#u LYng sE 56ng con trQ cho #n khi
ch$ng Gc giDi ChKng.
Microsoft.NET
1=
NgnNgLpTrnhC#
C4/Nng 2
NGN NG C#
T:i s6o +4"i s= 'ng ngn ng C#
C# )I ngn ng XNn gi"n
C# )I ngn ng 4iCn X:i
C# )I ngn ng 4/*ng X.i t/0ng
C# )I ngn ng G:n4 Gd
C# )I ngn ng et t5 Q4f6
C# )I ngn ng Go'@)[ 4f6
C# sd )I ngn ng +4Z gi3n
Ngn ng C# HI n4ng ngn ng Q4<c
C<c g/*c c4@hn gc c4o c4/Nng tr8n4
C4/Nng tr8n4 C# XNn gi"n
P4<t tri_n c4/Nng tr8n4 Gin4 4i6
C%@ 4ji k gIi tJ+
T<i sao -h=i s> 23ng ng9n ng: %;
Nhi`u ngi tin rYng kh>ng cmn thi#t cK &et ng>n ng? 7SC trnh &i. wa.av *v 1'r7v
Microsoft isua7 8asicv .; nh?ng ng>n ng? kh2c Gc nghd rYng z cung chC tht cD nh?ng
ch4c nqng cmn thi#t.
Ng>n ng? *@ 7; &et ng>n ng? Gc 5cn Uuht tJ * .; *v nhng nK Gc tBo tJ n`n tDng
Ch2t tri3n hFn. Microsoft L_t mu .i c>ng .i/c trong * .; * .; th9& .;o nh?ng ac tInh
&i 3 7;& cho ng>n ng? n;V 5 sE 56ng hFn. Nhi`u trong s nh?ng ac tInh n;V kh2 ging
.i nh?ng ac tInh cK trong ng>n ng? wa.a. "h>ng 5Jng 7Bi f Kv Microsoft a ra &et s
&6c Ich khi UPV 5Wng ng>n ng? n;V. Nh?ng &6c Ich n;V Gc Gc tK& t_t nh sauu
*@ 7; ng>n ng? Fn giDn
*@ 7; ng>n ng? hi/n Bi
*@ 7; ng>n ng? hng i tGng
*@ 7; ng>n ng? &Bnh &H .; &`& 5o
NgnNgC#
1A
NgnNgLpTrnhC#
*@ 7; ng>n ng? cK It tJ khKa
*@ 7; ng>n ng? hng &o5u7'
*@ sH trf n9n Ch Li#n
%; ,7 ng9n ng: ?n gi=n
*@ 7oBi LQ &et .;i sW Ch4c tBC .; ri r_& ca nh?ng ng>n ng? nh wa.a .; cv Lao g&
.i/c 7oBi LQ nh?ng &acrov nh?ng t'&C7at'v a k# thJav .; 7C cF sf Do {.irtua7 Las' c7ass}.
*h$ng 7; nh?ng nguV9n nhPn gPV ra sW nhm& 7cn haV 5cn #n nh?ng .hn ` cho c2c ngi
Ch2t tri3n *. N#u ch$ng ta 7; ngi hOc ng>n ng? n;V mu ti9n th ch_c ch_n 7; ta sH kh>ng
trDi !ua nh?ng thi gian 3 hOc nK Nhng khi K ta sH kh>ng Li#t Gc hi/u !uD ca ng>n
ng? *@ khi 7oBi LQ nh?ng .hn ` tr9n.
Ng>n ng? *@ Fn giDn . nK 5Wa tr9n n`n tDng * .; *. N#u ch$ng ta thPn thi/n .i *
.; * hoSc thS& chI 7; wa.av ch$ng ta sH thhV *@ kh2 ging .` 5i/n &Bov c$ Ch2Cv Li3u
th4cv to2n tE .; nh?ng ch4c nqng kh2c Gc 7hV trWc ti#C tJ ng>n ng? * .; *v nhng nK z
Gc cDi ti#n 3 7;& cho ng>n ng? Fn giDn hFn. Met .;i trong c2c sW cDi ti#n 7; 7oBi LQ c2c
5 thJav haV 7; th9& .;o nh?ng c$ Ch2C thaV i. I 56 nhv trong * cK La to2n tE 7;&
.i/c .i c2c th;nh .i9n 7; uuv . v .; i. ^3 Li#t khi n;o 5ong La to2n tE n;V cng Ch4c tBC .;
5 nhm& 7cn. Trong *@v ch$ng Gc thaV th# .i &et to2n tE 5uV nhht gOi 7; . {5ot}. ^i .i
ngi &i hOc th i`u n;V .; nh?ng .i/c cDi ti#n kh2c 7;& Lt nhm& 7cn .; Fn giDn hFn.
2hi +h3u N#u ch$ng ta z sE 56ng wa.a .; tin rYng nK Fn giDnv th ch$ng ta cng sH t&
thhV rYng *@ cng Fn giDn. [mu h#t &Oi ngi `u kh>ng tin rYng wa.a 7; ng>n ng? Fn
giDn. TuV nhi9nv *@ th 5 hFn 7; wa.a .; *.
%; ,7 ng9n ng: hi+n <i
^i`u g 7;& cho &et ng>n ng? hi/n Bi Nh?ng ac tInh nh 7; UE 7] ngoBi 7/v thu go&
Le nh tW engv nh?ng ki3u 5? 7i/u &f rengv .; LDo &St &z ngun 7; nh?ng ac tInh Gc
&ong Gi trong &et ng>n ng? hi/n Bi. *@ ch4a tht cD nh?ng ac tInh tr9n. N#u 7; ngi &i
hOc 7SC trnh cK th3 ch$ng ta sH cD& thhV nh?ng ac tInh tr9n Ch4c tBC .; khK hi3u. TuV
nhi9nv cng Jng 7o 7_ng ch$ng ta sH 5mn 5mn Gc t& hi3u nh?ng ac tInh !ua c2c chFng
trong cun s2ch n;V.
2hi +h3u *on trQ Gc tIch hGC .;o ng>n ng? *. *h$ng cng 7; nguV9n nhPn gPV ra
nh?ng r_c ri ca ng>n ng? n;V. *@ 7oBi LQ nh?ng Ch4c tBC .; r_c ri Ch2t sinh Lfi con trQ.
Trong *@v Le thu go& Le nh tW eng .; ki3u 5? 7i/u an to;n Gc tIch hGC .;o ng>n ng?v
sH 7oBi LQ nh?ng .hn ` r_c ri ca *.
%; ,7 ng9n ng: hng i t@ng
Nh?ng ac i3& chInh ca ng>n ng? hng i tGng {jLk'ctiori'nt'5 7anguag'} 7; sW
Kng gKi {'ncaCsu7ation}v sW k# thJa {inh'ritanc'}v .; a hnh {Co7V&orChis&}. *@ h\ trG tht
NgnNgC#
1T
NgnNgLpTrnhC#
cD nh?ng ac tInh tr9n. 1hmn hng i tGng ca *@ sH Gc trnh L;V chi ti#t trong &et
chFng ri9ng f Chmn sau.
%; ,7 ng9n ng: "<nh "A *7 cBng "C" 2Do
Nh z ` cSC trcv .i ng>n ng? *@ ch$ng ta chb L: gii hBn f chInh Lfi LDn thPn haV
7; trI tfng tGng ca ch$ng ta. Ng>n ng? n;V kh>ng at nh?ng r;ng Luec 79n nh?ng .i/c cK
th3 7;&. *@ Gc sE 56ng cho nhi`u c2c 5W 2n kh2c nhau nh 7; tBo ra 4ng 56ng UE 7] .qn
LDnv 4ng 56ng hOav LDn tInhv haV thS& chI nh?ng trnh Li9n 5:ch cho c2c ng>n ng? kh2c.
%; ,7 ng9n ng: Et tF khGa
*@ 7; ng>n ng? sE 56ng gii hBn nh?ng tJ khKa. 1hmn 7n c2c tJ khKa Gc sE 56ng 3
&> tD th>ng tin. *h$ng ta cK th3 nghd rYng &et ng>n ng? cK nhi`u tJ khKa th sH &Bnh hFn.
^i`u n;V kh>ng ChDi sW thStv It nhht 7; trong trng hGC ng>n ng? *@v ch$ng ta cK th3 t&
thhV rYng ng>n ng? n;V cK th3 Gc sE 56ng 3 7;& Lht c4 nhi/& .6 n;o. 8Dng sau 7i/t k9 c2c
tJ khKa ca ng>n ng? *@.
abstract default foreach object sizeof unsafe
as delegate goto operator stackalloc ushort
base do if out static using
bool double implicit override string virtual
break else in params struct volatile
byte enum int private switch void
case event interface protected this while
catch explicit internal public throw
char extern is readonly true
checked false lock ref try
class finally long return typeof
const fixed namespace sbyte uint
continue float new sealed ulong
decimal for null short unchecked
4*ng 1(2) 05 1h6a +7a ngn ng C#(
%; ,7 ng9n ng: hng "o2u,#
Mz ngun *@ cK th3 Gc .i#t trong nh?ng Chmn Gc gOi 7; nh?ng 7Cv nh?ng 7C n;V
ch4a c2c ChFng th4c th;nh .i9n ca nK. Nh?ng 7C .; nh?ng ChFng th4c cK th3 Gc sE
56ng 7Bi trong 4ng 56ng haV c2c chFng trnh kh2c. 8Yng c2ch truV`n c2c &cu th>ng tin #n
nh?ng 7C haV ChFng th4c ch$ng ta cK th3 tBo ra nh?ng &z ngun 5ong 7Bi cK hi/u !uD.
%; sA ,7 "Ht ng9n ng: -h Iin
NgnNgC#
20
NgnNgLpTrnhC#
*@ 7; &et trong nh?ng ng>n ng? 7SC trnh &i nhht. ;o thi i3& cun s2ch n;V Gc
.i#tv nK kh>ng Gc Li#t nh 7; &et ng>n ng? Ch Li#n. Nhng ng>n ng? n;V cK &et s 7] 5o
3 trf th;nh &et ng>n ng? Ch Li#n. Met trong nh?ng 7] 5o chInh 7; Microsoft .; sW ca& k#t
ca .NET
Microsoft &un ng>n ng? *@ trf n9n Ch Li#n. Mac 5o &et c>ng tV kh>ng th3 7;& &et
sDn ChM& trf n9n Ch Li#nv nhng nK cK th3 h\ trG. *2ch PV kh>ng 7Puv Microsoft z gaC sW
thht LBi .` h/ i`u h;nh Microsoft 8oL. Mac 5o Microsoft &un 8oL trf n9n Ch Li#n nhng
thht LBi. *@ thaV th# tt hFn 3 '& #n th;nh c>ng sF .i 8oL. ThSt sW 7; kh>ng Li#t khi n;o
&Oi ngi trong c>ng tV Microsoft sE 56ng 8oL trong c>ng .i/c hYng ng;V ca hO. TuV nh9nv
.i *@ th kh2cv nK Gc sE 56ng Lfi Microsoft. Nhi`u sDn ChM& ca c>ng tV n;V z chuV3n
i .; .i#t 7Bi LYng *@. 8Yng c2ch sE 56ng ng>n ng? n;V Microsoft z U2c nhSn khD nqng ca
*@ cmn thi#t cho nh?ng ngi 7SC trnh.
Micorosoft .NET 7; &et 7] 5o kh2c 3 '& #n sW th;nh c>ng ca *@. .NET 7; &et sW
thaV i trong c2ch tBo .; thWc thi nh?ng 4ng 56ng.
Ngo;i hai 7] 5o tr9n ng>n ng? *@ cng sH trf n9n Ch Li#n 5o nh?ng ac tInh ca ng>n
ng? n;V Gc ` cSC trong &6c trc nhu Fn giDnv hng i tGngv &Bnh &H...
Ng9n ng: %; *7 nh:ng ng9n ng: kh/c
*h$ng ta z tJng ngh' #n nh?ng ng>n ng? kh2c nh isua7 8asicv * .; wa.a. *K 7H
ch$ng ta cng tW hQi sW kh2c nhau gi?a ng>n ng? *@ .; nhng ng>n ng? K. ; cng tW hQi
tBi sao 7Bi chOn ng>n ng? n;V 3 hOc &; kh>ng chOn &et trong nh?ng ng>n ng? kia. *K rht
nhi`u 7] 5o .; ch$ng ta hzV U'& &et s sW so s2nh gi?a ng>n ng? *@ .i nh?ng ng>n ng?
kh2c gi$C ch$ng ta Chmn n;o trD 7i Gc nh?ng th_c &_c.
Microsoft nKi rYng *@ &ang #n s4c &Bnh ca ng>n ng? * .i sW 5 5;ng ca ng>n
ng? isua7 8asic. *K th3 nK kh>ng 5 nh isua7 8asicv nhng .i Chi9n LDn isua7
8asic.NET {'rsion =} th ngang nhau. 8fi . ch$ng Gc .i#t 7Bi tJ &et n`n tDng. *h$ng ta
cK th3 .i#t nhi`u chFng trnh .i It &z ngun hFn n#u 5ong *@.
Mac 5o *@ 7oBi LQ &et .;i c2c ac tInh ca *v nhng Lo 7Bi nK tr2nh Gc nh?ng 7\i
&; thng gaC trong ng>n ng? *. ^i`u n;V cK th3 ti#t ki/& Gc h;ng gi haV thS& chI
h;ng ng;V trong .i/c ho;n tht &et chFng trnh. *h$ng ta sH hi3u nhi`u .` i`u n;V trong c2c
chFng ca gi2o trnh.
Met i`u !uan trOng kh2c .i * 7; &z ngun *@ kh>ng i hQi ChDi cK tSC tin h'a5'r.
Tht cD &z ngun Gc .i#t trong khai L2o &et 7C.
Nh z nKi f L9n tr9n. .NET runti&' trong *@ thWc hi/n .i/c thu go& Le nh tW eng. po
i`u n;V n9n .i/c sE 56ng con trQ trong *@ It !uan trOng hFn trong *. Nh?ng con trQ cng
cK th3 Gc sE 56ng trong *@v khi K nh?ng oBn &z ngun n;V sH Gc 2nh 5hu 7; kh>ng
an to;n {unsaf' co5'}.
NgnNgC#
21
NgnNgLpTrnhC#
*@ cng tJ LQ ] tfng a k# thJa nh trong *. ; sW kh2c nhau kh2c 7; *@ a th9&
thuec tInh .;o trong &et 7C ging nh trong isua7 8asic. ; nh?ng th;nh .i9n ca 7C
Gc gOi 5uV nhht LYng to2n tE s.t kh2c .i * cK nhi`u c2ch gOi trong c2c tnh hung kh2c
nhau.
Met ng>n ng? kh2c rht &Bnh .; Ch Li#n 7; wa.av ging nh * .; *@ Gc Ch2t tri3n
5Wa tr9n *. N#u ch$ng ta !uV#t :nh sH hOc wa.a sau n;Vv ch$ng ta sH t& Gc nhi`u c2i &;
hOc tJ *@ cK th3 Gc 2C 56ng.
^i3& ging nhau *@ .; wa.a 7; cD hai cong Li9n 5:ch ra &z trung gianu *@ Li9n 5:ch ra
MS<+ cn wa.a Li9n 5:ch ra LVt'co5'. Sau K ch$ng Gc thWc hi/n LYng c2ch th>ng 5:ch
hoac Li9n 5:ch kustiiniti&' trong tJng &2V Do tFng 4ng. TuV nhi9nv trong ng>n ng? *@
nhi`u h\ trG Gc a ra 3 Li9n 5:ch &z ng>n ng? trung gian sang &z &2V. *@ ch4a nhi`u
ki3u 5? 7i/u cF LDn hFn wa.a .; cng cho ChgC nhi`u sW &f reng .i ki3u 5? 7i/u gi2 tr:. I
56v ng>n ng? *@ h\ trG ki3u 7i/t k/ {'numerator}v ki3u n;V Gc gii hBn #n &et tSC hYng
Gc :nh nghda trcv .; ki3u 5? 7i/u chu tr$c PV 7; ki3u 5? 7i/u gi2 tr: 5o ngi 5ong :nh
nghda. *h$ng ta sH Gc t& hi3u k hFn .` ki3u 5? 7i/u tha& chi#u .; ki3u 5? 7i/u gi2 tr: sH
Gc trnh L;V trong Chmn sau
TFng tW nh wa.av *@ cng tJ LQ tInh a k# thJa trong &et 7Cv tuV nhi9n &> hnh k#
thJa Fn n;V Gc &f reng Lfi tInh a k# thJa nhi`u giao 5i/n.
%/c Ic chuJn I6 cho ch?ng trnh
Th>ng thngv trong .i/c Ch2t tri3n Chmn &`&v ngi Ch2t tri3n ChDi tuPn th th'o !uV
trnh Ch2t tri3n Chmn &`& &et c2ch nghi9& ngat .; !uV trnh n;V z Gc chuMn hKa. TuV
nhi9n trong ChB& .i ca ch$ng ta 7; t& hi3u &et ng>n ng? &i .; .i#t nh?ng chFng trnh
nhQ th kh>ng i hQi kh_t kh' .i/c thWc hi/n th'o !uV trnh. Nhng 3 giDi !uV#t Gc
nh?ng .hn ` th ch$ng ta cng cmn ChDi thWc hi/n $ng th'o c2c Lc sau. ^mu ti9n 7; ChDi
U2c :nh .hn ` cmn giDi !uV#t. N#u kh>ng Li#t r .hn ` th ta kh>ng th3 t& Gc ChFng
Ch2C giDi !uV#t. Sau khi U2c :nh Gc .hn `v th ch$ng ta cK th3 nghd ra c2c k# hoBch 3
thWc hi/n. Sau khi cK &et k# hoBchv th cK th3 thWc thi k# hoBch n;V. Sau khi k# hoBch Gc
thWc thiv ch$ng ta ChDi ki3& tra 7Bi k#t !uD 3 U'& .hn ` Gc giDi !uV#t Uong cha. +ogic
n;V thng Gc 2C 56ng trong nhi`u 7dnh .Wc kh2c nhauv trong K cK 7SC trnh.
"hi tBo &et chFng trnh trong *@ haV Lht c4 ng>n ng? n;ov ch$ng ta n9n th'o nh?ng
Lc tumn tW sauu
2c :nh &6c ti9u ca chFng trnh.
2c :nh nh?ng ChFng Ch2C giDi !uV#t .hn `.
TBo &et chFng trnh 3 giDi !uV#t .hn `.
ThWc thi chFng trnh 3 U'& k#t !uD.
NgnNgC#
22
NgnNgLpTrnhC#
I 56 &6c ti9u 3 .i#t chFng trnh UE 7] .qn LDn Fn giDnv &6c ti9u chInh 7; UPV 5Wng
chFng trnh cho ChgC soBn thDo .; 7u tr? nh?ng chu\i k] tW haV .qn LDn. N#u kh>ng cK
&6c ti9u th kh>ng th3 .i#t Gc chFng trnh hi/u !uD.
8c th4 hai 7; !uV#t :nh #n ChFng Ch2C 3 .i#t chFng trnh. 8c n;V U2c :nh
nh?ng th>ng tin n;o cmn thi#t Gc sE 56ng trong chFng trnhv c2c hnh th4c n;o Gc sE
56ng. TJ nh?ng th>ng tin n;V ch$ng ta r$t ra Gc ChFng Ch2C 3 giDi !uV#t .hn `.
8c th4 La 7; Lc c;i atv f Lc n;V cK th3 5ong c2c ng>n ng? kh2c nhau 3 c;i atv
tuV nhi9nv ng>n ng? Cho hGC 3 giDi !uV#t .hn ` &et c2ch tt nhht sH Gc chOn. Trong
ChB& .i ca s2ch n;V ch$ng ta &ac :nh 7; 5ong *@v Fn giDn 7; ch$ng ta ang t& hi3u nK
; Lc cui cong 7; Chmn thWc thi chFng trnh 3 U'& k#t !uD.
%h?ng trnh %; ?n gi=n
^3 L_t mu cho .i/c t& hi3u ng>n ng? *@ .; tBo ti`n ` cho c2c chFng sauv chFng mu
ti9n trnh L;V &et chFng trnh *@ Fn giDn nhht.
89 d: 2(1 ) Ch;<ng trnh C# =.> ti%n(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
class ChaoMung
{
static void Main( )
{
// Xuat ra man hinh
System.Console.WriteLine("Chao Mung);
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
Chao Mung
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Sau khi .i#t Uong ch$ng ta 7u 5i 5Bng tSC tin cK Chmn &f reng .cs {* sharC}. Sau K
Li9n 5:ch .; chBV chFng trnh. "#t !uD 7; &et chu\i sChao Mungt sH Uuht hi/n trong &;n
hnh conso7'.
*2c &6c sau sH gii thi/u UoaV !uanh .I 56 2.1v cn Chmn chi ti#t tJng 7oBi sH Gc trnh
L;V trong c2c chFng k# ti#C.
&-K i t@ng *7 ki0u 2: ,i+u (tL-#)
^i`u ct 7i ca 7SC trnh hng i tGng 7; tBo ra c2c ki3u &i. "i3u 7; &et th4 Gc
U'& nh trJu tGng. NK cK th3 7; &et LDng 5? 7i/uv &et ti3u trnhv haV &et n$t 7/nh trong
&et cEa s. TK& 7Bi ki3u Gc :nh nghda nh &et 5Bng .Ja cK thuec tInh chung {CroC'rti's}
.; c2c h;nh .i 4ng UE {L'ha.ior} ca nK.
NgnNgC#
2)
NgnNgLpTrnhC#
N#u trong &et 4ng 56ng tr9n ~in5o(s ch$ng ta tBo ra La n$t 7/nh OKv Cancelv Helpv th
thWc chht 7; ch$ng ta ang 5ong La th3 hi/n ca &et ki3u n$t 7/nh trong ~in5o(s .; c2c n$t
n;V cong chia U c2c thuec tInh .; h;nh .i chung .i nhau. I 56v c2c n$t cK c2c thuec tInh
nh kIch thcv .: trIv nhzn t9n {7aL'7}v tuV nhi9n &\i thuec tInh ca &et th3 hi/n kh>ng nhht
thi#t ChDi ging nhauv .; thng th ch$ng kh2c nhauv nh n$t OK cK nhzn 7; sOKtv Cancel cK
nhzn 7; sCancelt...Ngo;i ra c2c n$t n;V cK c2c h;nh .i 4ng UE chung nh khD nqng .Hv kIch
hoBtv 2C 4ng c2c th>ng i/C nhhnv|ToV th'o tJng ch4c nqng ac Li/t ri9ng ca tJng 7oBi th
nei 5ung 4ng UE kh2c nhauv nhng tht cD ch$ng Gc U'& nh 7; cong &et ki3u.
*ng nh nhi`u ng>n ng? 7SC trnh hng i tGng kh2cv ki3u trong *@ Gc :nh nghda
7; &et 7C {c7ass}v .; c2c th3 hi/n ri9ng ca tJng 7C Gc gOi 7; i tGng {oLk'ct}. Trong
c2c chFng k# ti#C sH trnh L;V c2c ki3u kh2c nhau ngo;i ki3u 7C nh ki3u 7i/t k9v chu tr$c .;
ki3u V !uV`n {5'7'gat's}.
uaV 7Bi chFng trnh ChaoMung tr9nv chFng trnh n;V chb cK &et ki3u Fn giDn 7; 7C
ChaoMung. ^3 :nh nghda &et ki3u 7C trong *@ ch$ng ta ChDi 5ong tJ kho2 classv ti#C sau 7;
t9n 7C trong .I 56 tr9n t9n 7C 7; ChaoMung. Sau K :nh nghda c2c thuec tInh .; h;nh eng
cho 7C. Thuec tInh .; h;nh eng ChDi nY& trong 5hu { }.
2hi +h3u "hai L2o 7C trong *@ kh>ng cK 5hu ; sau ngoac } cui cong ca 7C. ; kh2c
.i 7C trong ** 7; chia th;nh 2 Chmn h'a5'r .; Chmn :nh nghda. Trong *@ v :nh nghda
&et 7C Gc gKi gOn trong 5hu { } sau t9n 7C .; trong cong &et tSC tin(
.h?ng th1c
[ai th;nh Chmn chInh chu th;nh &et 7C 7; thuec tInh haV tInh chht .; ChFng th4c haV
cn gOi 7; h;nh eng 4ng UE ca i tGng. Trong *@ h;nh .i Gc :nh nghda nh &et
ChFng th4c th;nh .i9n ca 7C.
1hFng th4c chInh 7; c2c h;& Gc :nh nghda trong 7C. po Kv ta cn cK th3 gOi c2c
ChFng th4c th;nh .i9n 7; c2c h;& th;nh .i9n trong &et 7C. *2c ChFng th4c n;V chb ra
rYng c2c h;nh eng &; 7C cK th3 7;& Gc cong .i c2ch th4c 7;& h;nh eng K. Th>ng
thngv t9n ca ChFng th4c thng Gc at th'o t9n h;nh engv .I 56 nh DrawLine() haV
GetString().
TuV nhi9n trong .I 56 2.1 .Ja trnh L;Vv ch$ng ta cK h;& th;nh .i9n 7; Main() h;& n;V 7;
h;& ac Li/tv kh>ng &> tD h;nh eng n;o ca 7C h#tv nK Gc U2c :nh 7; h;& mu .;o ca
7C {'ntrV Coint} .; Gc *,+ gOi mu ti9n khi thWc thi.
2hi +h3u Trong *@v h;& Main() Gc .i#t k] tW hoa muv .; cK th3 trD .` gi2 tr: void haV
int
"hi chFng trnh thWc thiv *+, gOi h;& Main() mu ti9nv h;& Main() 7; mu .;o ca
chFng trnhv .; &\i chFng trnh ChDi cK &et h;& Main(). ^>i khi chFng trnh cK nhi`u
h;& Main() nhng 7$c n;V ta ChDi U2c :nh c2c chb 5cn Li9n 5:ch 3 *+, Li#t Pu 7; h;&
Main() mu .;o 5uV nhht trong chFng trnh.
NgnNgC#
2N
NgnNgLpTrnhC#
i/c khai L2o ChFng th4c Gc U'& nh 7; &et sW giao c gi?a ngi tBo ra 7C .;
ngi sE 56ng 7C n;V. Ngi UPV 5Wng c2c 7C cng cK th3 7; ngi 5ong 7C Kv nhng
kh>ng ho;n to;n nh .SV. cK th3 c2c 7C n;V Gc UPV 5Wng th;nh c2c th .i/n chuMn .;
cung chC cho c2c nhK& Ch2t tri3n kh2c|po .SV .i/c tuPn th th'o c2c !ui t_c 72 rht cmn thi#t.
^3 khai L2o &et ChFng th4cv ChDi U2c :nh ki3u gi2 tr: trD .`v t9n ca ChFng th4cv .;
cui cong 7; c2c tha& s cmn thi#t cho ChFng th4c thWc hi/n.
%h thEch
Met chFng trnh Gc .i#t tt th cmn ChDi cK ch$ thIch c2c oBn &z Gc .i#t. *2c oBn
ch$ thIch n;V sH kh>ng Gc Li9n 5:ch .; cng kh>ng tha& gia .;o chFng trnh. M6c Ich
chInh 7; 7;& cho oBn &z ngun r r;ng .; 5 hi3u.
Trong .I 56 2.1 cK &et 5ng ch$ thIch u
// Xuat ra man hinh.
Met chu\i ch$ thIch tr9n &et 5ng th L_t mu LYng k] tW st. "hi trnh Li9n 5:ch gaC hai k]
tW n;V th sH LQ !ua 5ng K.
Ngo;i ra *@ cn cho ChgC ki3u ch$ thIch cho &et haV nhi`u 5ngv .; ta ChDi khai L2o st f
Chmn mu ch$ thIch .; k#t th$c ch$ thIch 7; k] tW st.
89 d: 2(2 ) Minh hBa dCng +h3 th9+h tr%n nhiD> dEng(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
class ChaoMung
{
static void Main()
{
/* Xuat ra man hinh chuoi `chao mung
Su dung ham WriteLine cua lop System.Console
*/
System.Console.WriteLine("Chao Mung);
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
Chao Mung
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Ngo;i hai ki3u ch$ thIch tr9n ging trong ** th *@ cn h\ trG th9& ki3u th4 La cng 7;
ki3u cui congv ki3u n;V ch4a c2c :nh 5Bng M+ nhY& Uuht ra tSC tin M+ khi Li9n 5:ch 3
tBo su 7i/u cho &z ngun. *h$ng ta sH L;n ki3u n;V trong c2c chFng trnh f c2c Chmn ti#C.
NgnNgC#
2-
NgnNgLpTrnhC#
Mng 23ng %onso,#
I 56 Fn giDn tr9n Gc gOi 7; 4ng 56ng conso7'v 4ng 56ng n;V giao ti#C .i ngi 5ong
th>ng !uan L;n ChI& .; kh>ng cK giao 5i/n ngi 5ong {l<}v ging nh c2c 4ng 56ng thng
thhV trong ~in5o(s. Trong c2c chFng UPV 5Wng c2c 4ng 56ng nPng cao tr9n ~in5o(s haV
~'L th ta &i 5ong c2c c2c giao 5i/n hOa. *n 3 t& hi3u .` ng>n ng? *@ thumn tu] th
c2ch tt nhht 7; ta .i#t c2c 4ng 56ng conso7'.
Trong hai 4ng 56ng Fn giDn tr9n ta z 5ong ChFng th4c WriteLine() ca 7C Console.
1hFng th4c n;V sH Uuht ra &;n hnh 5ng 7/nh haV &;n hnh pjS chu\i tha& s a .;ov
c6 th3 7; chu\i sChao Mungt.
Na"#s-ac#
Nh ch$ng ta z Li#t .NET cung chC &et th .i/n c2c 7C se .; th .i/n n;V cK t9n 7;
%*+ {%ra&'(ork *7ass +iLrarV}. Trong K Console chb 7; &et 7C nhQ trong h;ng ng;n 7C
trong th .i/n. M\i 7C cK &et t9n ri9ngv . .SV %*+ cK h;ng ng;n t9n nh ArrayListv
Dictionaryv FileSelectorv|
^i`u n;V 7;& nDV sinh .hn `v ngi 7SC trnh kh>ng th3 n;o nh h#t Gc t9n ca c2c 7C
trong .NET %ra&'(ork. T/ hFn n?a 7; sau n;V cK th3 ta tBo 7Bi &et 7C trong .i 7C z cK
chng hBn. I 56 trong !u2 trnh Ch2t tri3n &et 4ng 56ng ta cmn UPV 5Wng &et 7C tJ i3n .;
7hV t9n 7; Dictionaryv .; i`u n;V 5cn #n sW tranh chhC khi Li9n 5:ch . *@ chb cho ChgC &et
t9n 5uV nhht.
*h_c ch_n rYng khi K ch$ng ta ChDi i t9n ca 7C tJ i3n &; ta .Ja tBo th;nh &et c2i
t9n kh2c chng hBn nh myDictionary. "hi K sH 7;& cho .i/c Ch2t tri3n c2c 4ng 56ng trf
n9n Ch4c tBCv cng k`nh. ^#n &et sW Ch2t tri3n nhht :nh n;o K th chInh 7; cFn 2c &eng
cho nh; Ch2t tri3n.
ZiDi Ch2C 3 giDi !uV#t .hn ` n;V 7; .i/c tBo ra &et na&'sCac'E na&s'sCac' sH hBn ch#
ChB& .i ca &et t9nv 7;& cho t9n n;V chb cK ] nghda trong .ong z :nh nghda.
ZiD sE cK &et ngi nKi Tong 7; &et k sv tJ k s ChDi i k& .i &et 7dnh .Wc nhht :nh
n;o Kv . n#u kh>ng th ch$ng ta sH kh>ng Li#t Gc 7; anh ta 7; k s cmu ngv cF khI haV
Chmn &`&. "hi K &et 7SC trnh .i9n *@ sH LDo rYng Tong 7; CauDuong.KySu ChPn Li/t .i
CoKhi.KySu haV PhanMem.KySu. Na&'sCac' trong trng hGC n;V 7; CauDuongv CoKhiv
PhanMem sH hBn ch# ChB& .i ca nh?ng tJ th'o sau. NK tBo ra &et .ong kh>ng gian 3 t9n
sau K cK nghda.
TFng tW nh .SV ta c4 tBo c2c na&'sCac' 3 ChPn th;nh c2c .ong cho c2c 7C trong t9n
kh>ng tranh chhC .i nhau.
TFng tW nh .SVv .NET %ra&'(ork cK UPV 5Wng &et 7C Dictionary L9n trong
na&'sCac' System.Collectionsv .; tFng 4ng ta cK th3 tBo &et 7C Dictionary kh2c nY&
trong na&'sCac' ProgramCSharp.DataStructuresv i`u n;V ho;n to;n kh>ng 5cn #n sW
tranh chhC .i nhau.
NgnNgC#
20
NgnNgLpTrnhC#
Trong .I 56 &inh hOa 1.2 i tGng Console L: hBn ch# Lfi na&'sCac' LYng .i/c sE 56ng &z
7/nhu
System.Console.WriteLine();
To/n t> N.O
Trong .I56 2.2 tr9n 5hu .x Gc sE 56ng 3 truV cSC #n ChFng th4c haV 5? 7i/u trong
&et 7C {trong trng hGC n;V ChFng th4c 7; WriteLine()}v .; ngqn c2ch gi?a t9n 7C #n
&et na&'sCac' U2c nhSn {na&sCac' System .; 7C 7; Console}. i/c thWc hi/n n;V th'o
hng tJ tr9n Uungv trong K &4c mu ti9n na&'sCac' 7; Systemv ti#C th'o 7; 7C Consolev
.; cui cong 7; truV cSC #n c2c ChFng th4c haV thuec tInh ca 7C.
Trong nhi`u trng hGC na&'sCac' cK th3 Gc chia th;nh c2c na&'sCac' con gOi 7;
suLna&'sCac'. I 56 trong na&'sCac' System cK ch4a &et s c2c suLna&'saCc' nh
Configurationv Collectionsv Datav .; cn rht nhi`u n?av hFn n?a trong na&'sCac' Collection
cn chia th;nh nhi`u na&'saCc' con n?a.
Na&'sCac' gi$C ch$ng ta t ch4c .; ngqn c2ch nh?ng ki3u. "hi ch$ng ta .i#t &et
chFng trnh *@ Ch4c tBCv ch$ng ta cK th3 ChDi tBo &et ki#n tr$c na&'sCac' ri9ng cho &nhv
.; kh>ng gii hBn chi`u sPu ca cPV ChPn chC na&'sCac'. M6c Ich ca na&'sCac' 7; gi$C
ch$ng ta chia 3 !uDn 7] nh?ng ki#n tr$c i tGng Ch4c tBC.
TF khGa using
^3 7;& cho chFng trnh gOn hFnv .; kh>ng cmn ChDi .i#t tJng na&'sCac' cho tJng i
tGngv *@ cung chC tJ khKa 7; usingv sau tJ khKa n;V 7; &et na&'sCac' haV suLna&'sCac'
.i &> tD mV trong chu tr$c ChPn chC ca nK.
Ta cK th3 5ong 5ng 7/nh u
using System;
f mu chFng trnh .; khi K trong chFng trnh n#u ch$ng ta cK 5ong i tGng Console th
kh>ng cmn ChDi .i#t mV u System.Console. &; chb cmn .i#t Console. th>i.
89 d: 2(F) DCng 1h6a >sing
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
class ChaoMung
{
static void Main()
{
//Xuat ra man hinh chuoi thong bao
Console.WriteLine("Chao Mung);
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
NgnNgC#
2=
NgnNgLpTrnhC#
?@t A>*)
Chao Mung
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
+u ] rYng ChDi at cPu using System trc :nh nghda 7C ChaoMung.
Mac 5o ch$ng ta chb :nh rYng ch$ng ta sE 56ng na&'sCac' Systemv .; kh>ng ging nh c2c
ng>n ng? kh2cv kh>ng th3 chb :nh rYng ch$ng ta sE 56ng i tGng System.Console.
89 d: 2(G) ?hng hHp #I trong C#(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System.Console;
class ChaoMung
{
static void Main()
{
//Xuat ra man hinh chuoi thong bao
WriteLine("Chao Mung);
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
^oBn chFng trnh tr9n khi Li9n 5:ch sH Gc th>ng L2o &et 7\i nh sauu
error CS0138: A using namespace directive can only be applied to namespace;
`System.Console is a class not a namespace.
*2ch Li3u 5in na&'sCac' cK th3 7;& giD& nhi`u thao t2c g L;n ChI&v nhng nK cK th3 sH
kh>ng '& 7Bi 7Gi Ich n;o Lfi . nK cK th3 7;& U2o tren nh?ng na&'sCac' cK t9n kh>ng kh2c
nhau. ZiDi Ch2C chung 7; ch$ng ta sE 56ng tJ khKa using .i c2c na&'sCac' z Gc UPV
5Wng sXnv c2c na&'sCac' 5o ch$ng ta tBo rav nh?ng na&'sCac' n;V ch$ng ta z n_& ch_c su
7i/u .` nK. *n i .i na&'sCac' 5o c2c hzng th4 La cung chC th ch$ng ta kh>ng n9n 5ong
tJ khKa using.
.hPn Ii+t ch: thng *7 ch: hoa
*ng ging nh **v *@ 7; ng>n ng? ChPn Li/t ch? thng .i ch? hoav i`u n;V cK
nghda rYng hai cPu 7/nh writeLine th kh2c .i WriteLine .; cng kh2c .i WRITELINE.
^2ng ti#c 7; *@ kh>ng ging nh 8v &>i trng Ch2t tri3n *@ sH kh>ng tW sEa c2c 7\i n;Vv
n#u ch$ng ta .i#t hai ch? .i c2ch kh2c nhau th ch$ng ta cK th3 a .;o chFng trnh g ri
t& ra c2c 7\i n;V.
^3 tr2ch .i/c 7znh ChI thi gian .; c>ng s4cv ngi ta Ch2t tri3n &et s !ui c cho c2ch
at t9n Li#nv hYngv h;&v .; nhi`u :nh 5anh kh2c n?a. ui c trong gi2o trnh n;V 5ong c$
Ch2C 7Bc ; {ca&'7 notation} cho t9n Li#n .; c$ Ch2C 1asca7 cho h;&v hYngv .; thuec tInh.
I 56 u
NgnNgC#
2A
NgnNgLpTrnhC#
8i#n &VDictionary th'o c2ch at t9n c$ Ch2C 7Bc ;.
[;& DrawLinev thuec tInh ColorBackground th'o c2ch at t9n c$ Ch2C 1asca7.
TF khGa static
[;& Main() trong .I 56 &inh hOa tr9n cK nhi`u hFn &et c2ch thi#t k#. Trong &inh hOa n;V
h;& Main() Gc khai L2o .i ki3u trD .` 7; voidv t4c 7; h;& n;V kh>ng trD .` Lht c4 gi2 tr:
n;o cD. ^>i khi cmn ki3& tra chFng trnh cK thWc hi/n $ng haV kh>ngv ngi 7SC trnh cK th3
khai L2o h;& Main() trD .` &et gi2 tr: n;o K 3 U2c :nh k#t !uD thWc hi/n ca chFng trnh.
Trong khai L2o ca .I 56 tr9n cK 5ong tJ khKa staticu
static void Main()
{
.......
}
TJ khKa n;V chb ra rYng h;& Main() cK th3 Gc gOi &; kh>ng cmn ChDi tBo i tGng
ChaoMung. Nh?ng .hn ` 7i9n !uan #n khai L2o 7Cv ChFng th4cv haV thuec tInh sH Gc
trnh L;V chi ti#t trong c2c chFng ti#C th'o.
.h/t tri0n ch?ng trnh "inh hQa
*K ti thi3u 7; hai c2ch 3 soBn thDov Li9n 5:ch .; thWc thi chFng trnh trong cun s2ch n;Vu
SE 56ng &>i trng Ch2t tri3n tIch hGC {<pE} isua7 Stu5io .NET
SE 56ng chFng trnh soBn thDo .qn LDn Lht k nh Not'Ca5 ri 5ong Li9n 5:ch 5ng
7/nh.
Mac 5o ch$ng ta cK th3 Ch2t tri3n Chmn &`& L9n ngo;i isua7 Stu5io .NETv <pE cung chC
nhi`u c2c ti/n Ich h\ trG cho ngi Ch2t tri3n nhu h\ trG Chmn soBn thDo &z ngun nh canh
7`v &;u s_cv tIch hGC c2c tSC tin trG gi$Cv c2c ac tInh int'77is'ns'v...Nhng i`u !uan trOng
nhht 7; <pE ChDi cK c>ng c6 5'Lug &Bnh .; &et s c>ng c6 trG gi$C Ch2t tri3n 4ng 56ng
kh2c.
Trong cun s2ch n;V giD sE rYng ngi Oc ang sE 56ng isua7 Stu5io .NET. 1hmn trnh
n;V sH tSC trung .;o ng>n ng? .; C7atfor& hFn 7; c>ng c6 Ch2t tri3n. *h$ng ta cK th3 sao chgC
tht cD nh?ng &z ngun .I 56 .;o trong &et chFng trnh soBn thDo .qn LDn nh Not'Ca5 haV
E&acsv 7u ch$ng 5i 5Bng tSC tin .qn LDnv .; Li9n 5:ch ch$ng LYng trnh Li9n 5:ch 5ng
7/nh *@v chFng trnh n;V Gc ChPn Chi cong .NET %ra&'(ork Sp". Trong nh?ng chFng
cui .` UPV 5Wng c2c 4ng 56ng tr9n ~in5o(s .; ~'Lv ch$ng ta sH sE 56ng c>ng c6 isua7
Stu5io .NET 3 tBo ra c2c ~in5o(s %or& .; ~'L %or&v tuV nhi9n ch$ng ta cng cK th3 .i#t
LYng taV trong Not'Ca5 n#u ch$ng ta !uV#t :nh sE 56ng c2ch 7;& LYng taV thaV . 5ong c>ng
c6 thi#t k#.
S> 23ng Not#-a2 so<n th=o
NgnNgC#
2T
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
^mu ti9n ch$ng ta sH &f chFng trnh Not'Ca5 ri soBn thDo chFng trnh &inh hOa tr9nv
7u ] 7; ta cK th3 sE 56ng Lht c4 trnh soBn thDo .qn LDn n;o ch4 kh>ng nhht thi#t 7; Not'Ca5.
Sau khi soBn thDo Uong th 7u tSC tin Uung da .; tSC tin n;V cK Chmn &f reng 7; .csv trong
.I 56 n;V 7; chao&ung.cs. 8c ti#C th'o 7; Li9n 5:ch tSC tin ngun .Ja tBo ra. ^3 Li9n 5:ch
ta 5ong trnh Li9n 5:ch 5ng 7/nh *@ {csc.'U'} chFng trnh n;V Gc chgC .;o &2V trong !u2
trnh c;i .NET %ra&'(ork. ^3 Li#t csc.'U' nY& chInh U2c .: trI n;o trong da ta cK th3 5ong
ch4c nqng t& ki#& ca ~in5o(s.
^3 thWc hi/n Li9n 5:ch ch$ng ta &f &et cEa s 5ng 7/nh ri 2nh .;o 7/nh th'o &cu sauu
csc.exe [/out: <file thuc thi>] <file ngun>
I 56u csc.exe /out:d:\chaomung.exe d:\chaomung.cs
Thng th khi Li9n 5:ch ta chb cmn hai Chmn 7; t9n ca trnh Li9n 5:ch .; t9n tSC tin ngun &;
th>i. Trong &cu tr9n cK 5ong &et trong nhi`u toV chOn khi Li9n 5:ch 7; /outv th'o sau 7; t9n
ca chFng trnh thWc thi haV chInh 7; k#t !uD Li9n 5:ch tSC tin ngun.
*2c tha& s toV chOn cK rht nhi`u n#u &un t& hi3u ch$ng ta cK th3 5ong 7/nhu
csc.exe /?
+/nh n;V Uuht ra &;n hnh to;n Le c2c toV chOn Li9n 5:ch .; c2c hng 5cn sE 56ng.
[ai hnh sau &inh hOa !u2 trnh nhSC &z ngun chFng trnh *@ LYng &et trnh soBn thDo
.qn LDn Fn giDn nh Not'Ca5 trong ~in5o(s. ; sau K Li9n 5:ch tSC tin &z ngun .Ja tBo
ra LYng chFng trnh csc.'U' &et trnh Li9n 5:ch 5ng 7/nh ca *@. "#t !uD 7; &et tSC tin
thWc thi Gc tBo ra .; ta sH chBV chFng trnh n;V.
&nh 2(2) MJ ng>Kn =;H+ soLn th*o trong Not'pad(
NgnNgC#
)0
NgnNgLpTrnhC#
&nh 2(F) 4i%n dM+h N- thO+ thi +h;<ng trnh(
S> 23ng Risua, Stu2io .NET 0 t<o ch?ng trnh
^3 tBo chFng trnh ch;o &Jng trong <pEv 7Wa chOn &6c isua7 Stu5io .NET trong &'nu
Start hoac icon ca nK tr9n 5'sktoCv sau khi khfi eng Uong chFng trnhv chOn ti#C ch4c
nqng File New Project trong &'nu. *h4c nqng n;V sH gOi cEa s New Project {hnh 2.N
L9n 5i}. N#u nh chFng trnh isua7 Stu5io .NET Gc chBV 7mn mu ti9nv khi K cEa s
New Project sH Uuht hi/n tW eng &; kh>ng cmn ChDi kIch hoBt.
^3 tBo 4ng 56ngv ta 7Wa chOn &6c Visual C# Projects trong cEa s Project Type L9n tr2i. +$c
n;V ch$ng ta cK th3 nhSC t9n cho 4ng 56ng .; 7Wa chOn th &6c nFi 7u tr? c2c tSC tin n;V.
*ui congv kIch .;o OK khi &Oi chuV/n khfi tBo z chh& 54t .; &et cEa s &i sH Uuht hi/n
{hnh 2.N L9n 5i}v ch$ng ta cK th3 nhSC &z ngun .;o PV.
+u ] rYng isua7 Stu5io .NET tBo ra &et na&'sCac' 5Wa tr9n t9n ca Crok'ct &; ta .Ja cung
chC {ChaoMung}v .; th9& .;o chb 5cn sE 56ng na&'sCac' System LYng 7/nh usingv Lfi hmu
nh &Oi chFng trnh &; ch$ng ta .i#t `u cmn sE 56ng c2c ki3u 5? 7i/u ch4a trong
na&'sCac' System.
NgnNgC#
)1
NgnNgLpTrnhC#
&nh 2(G) 0Lo Png d:ng C# +onso#' trong 8is>a# St>dio (N/0(
&nh 2(Q) Ph.n soLn th*o mJ ng>Kn +ho proR'+t(
isua7 Stu5io .NET tBo &et 7C t9n 7; Class1v 7C n;V ch$ng ta cK th3 toV ] i t9n ca
ch$ng. "hi i t9n ca 7Cv tt nhht 7; i t9n 7u>n tSC tin ch4a 7C K {Class1.cs}. ZiD sE
NgnNgC#
)2
NgnNgLpTrnhC#
trong .I 56 tr9n ch$ng ta i t9n ca 7C th;nh ChaoMungv .; i t9n tSC tin Class1.cs {i
t9n tSC tin trong cEa s Solution Explorer}.
*ui congv isua7 Stu5io .NET tBo &et khung sn chFng trnhv .; k#t th$c .i ch$ thIch
TODO 7; .: trI L_t mu ca ch$ng ta. ^3 tBo chFng trnh ch;o &Jng trong &inh hOa tr9nv ta
LQ tha& s string[] args ca h;& Main() .; UKa tht cD c2c ch$ thIch L9n trong ca h;&. Sau
K nhSC .;o 5ng 7/nh sau L9n trong thPn ca h;& Main()
// Xuat ra man hinh
System.Console.WriteLine("Chao Mung);
Sau tht cD c>ng .i/c Kv ti#C th'o 7; Chmn Li9n 5:ch chFng trnh tJ isua7 Stu5io .NET.
Th>ng thng 3 thWc hi/n &et c>ng .i/c n;o K ta cK th3 chOn kIch hoBt ch4c nqng trong
&'nuv haV c2c Lutton tr9n thanh too7Larv .; c2ch nhanh nhht 7; sE 56ng c2c ChI& nKng haV
c2c ChI& k#t hGC 3 gOi nhanh &et ch4c nqng.
Trong .I 56v 3 Li9n 5:ch chFng trnh nhhn Ctr#SShiTtS4 hoac chOn ch4c nqngu
Build Build Solution. Met c2ch kh2c n?a 7; 5ong n$t 7/nh tr9n thanh too7Laru
^3 chBV chFng trnh .Ja Gc tBo ra &; kh>ng sE 56ng ch# e 5'Lug ch$ng ta cK th3 nhhn
Ctr#SFQ haV chOn Debug Start Without Debugging hoac n$t 7/nh tr9n thanh too7Lar
ca isua7 Stu5io . NET
2hi +h3u Tt hFn h#t 7; ch$ng ta n9n LQ ra nhi`u thi gian 3 t& hi3u haV kh2& Ch2 &>i
trng Ch2t tri3n isua7 Stu5io .NET. ^PV cng 7; c2ch th4c tt &; nh?ng ngi Ch2t tri3n
4ng 56ng .; ch$ng ta n9n thWc hi/n. i/c t& hi3u isua7 Stu5io .NET .; th>ng thBo nK sH
gi$C cho ch$ng ta rht nhi`u trong !u2 trnh UPV 5Wng .; Ch2t tri3n 4ng 56ng sau n;V.
%Pu hSi *7 tr= ,i
CU> hVi 1u Met chFng trnh *@ cK th3 chBV tr9n Lht c4 &2V n;o
0r* #Wi 1) ?hng ph*i tXt +*( MYt +h;<ng trnh C# +hZ +hLy tr%n m,y +6 Common Lang>ag'
[>ntim' \CL[] =;H+ +-i =^t( N@> +h3ng ta +opy mYt +h;<ng trnh '_' +7a C# A>a mYt m,y
1hng +6 CL[ th +h3ng ta s` nhn =;H+ mYt #ai( 0rong nhng phi%n *n +7a Windows
1hng +6 CL[ +h3ng ta s` =;H+ *o rbng thi@> tp tin DLL(
CU> hVi 2) N#u &un a chFng trnh &; ta .i#t cho &et ngi LBn th tSC tin n;o &;
ch$ng ta cmn a
0r* #Wi 2) 0hng th;Wng +,+h tct nhXt #- =;a +h;<ng trnh =J i%n dM+h( diD> n-y +6 nghea
rbng sa> 1hi mJ ng>Kn =;H+ i%n dM+hf +h3ng ta s` +6 mYt +h;<ng trnh thO+ thi \tp tin +6
ph.n mg rYng h('_' ]( Nh; Nyf n@> +h3ng ta m>cn =;a +h;<ng trnh Chaom>ng +ho tXt +*
nhng ng;Wi Ln +7a +h3ng ta th +hZ +.n =;a tp tin Chaom>ng('_'( ?hng +.n thi@t ph*i
=;a tp tin ng>Kn Chaom>ng(+s( 8- nhng ng;Wi Ln +7a +h3ng ta 1hng +.n thi@t ph*i +6
trnh i%n dM+h C#( &B +hZ +.n +6 C# r>ntim' tr%n m,y t9nh \nh; CL[ +7a Mi+rosoTt] #- +6
thi +hLy =;H+ +h;<ng trnh +7a +h3ng ta(
CU> hVi Fu Sau khi tBo ra Gc tSC tin thWc thi .'U'. *K cmn thi#t gi? 7Bi tSC tin ngun kh>ng
NgnNgC#
))
NgnNgLpTrnhC#
0r* #Wi F) N@> +h3ng ta t5 V tp tin mJ ng>Kn th sa> n-y s` rXt 1h6 1hjn +ho NiI+ mg rYng
hay thay =ki +h;<ng trnhf do =6 +.n thi@t ph*i gi #Li +,+ tp tin ng>Kn( &.> h@t +,+ lD/
tLo ra +,+ +,+ tp tin ng>Kn \(+s] N- +,+ tp tin thO+ thi( Cmng nh; gi +,+ tp tin ng>Kn
+h3ng ta +mng +.n thi@t ph*i gi +,+ tp tin 1h,+ nh; #- +,+ t-i ng>y%n %n ngo-i +,+ i+onf
imag'f Torm(( Ch3ng ta s` #;> gi nhng tp tin n-y trong tr;Wng hHp +h3ng ta +.n thay =ki
hay tLo #Li tp tin thO+ thi(
CU> hVi Gu N#u trnh Li9n 5:ch *@ a ra &et trnh soBn thDov cK ChDi nhht thi#t ChDi sE 56ng
nK
0r* #Wi G) ?hng ho-n to-n nh; Ny( Ch3ng ta +6 thi sn d:ng Xt +P trnh soLn th*o Njn *n
n-o N- #;> mJ ng>Kn d;oi dLng tp tin Njn *n( N@> trnh i%n dM+h =;a ra mYt trnh soLn
th*o th +h3ng ta n%n sn d:ng n6( N@> +h3ng ta +6 mt trnh soLn th*o 1h,+ tct h<n +h3ng ta
+6 thi sn d:ng n6( MYt sc +,+ tiIn 9+h soLn th*o mJ ng>Kn +6 thi gi3p +ho ta dp d-ng tm
+,+ #ai +3 ph,pf gi3p tLo mYt sc mJ ng>Kn tO =Yng =<n gi*n(((N6i +h>ng #- tCy th'o +h3ng ta
nh;ng th'o ti th 8is>a# St>dio (N/0 +mng 1h, tct =i sn d:ng
CU> hVi Qu *K th3 kh>ng !uan tP& #n nh?ng cDnh L2o khi Li9n 5:ch &z ngun
0r* #Wi Q) MYt N-i +*nh ,o 1hng *nh h;gng =@n +h;<ng trnh 1hi +hLyf nh;ng mYt sc 1h,+
+6 thi *nh h;gng =@n +h;<ng trnh +hLy( N@> trnh i%n dM+h =;a ra +*nh ,of tP+ #- t9n hiI>
+ho mYt thP g =6 1hng =3ng( &.> h@t +,+ trnh i%n dM+h +ho phqp +h3ng ta thi@t #p mP+
=Y +*nh ,o( 4bng +,+h thi@t #p mP+ =Y +*nh ,o +h3ng ta +6 thi +hZ A>an tUm =@n nhng
+*nh ,o ng>y hiimf hay nhn h@t tXt +* nhng +*nh ,o( N6i +h>ng +,+h tct nhXt #- +h3ng
ta n%n _'m tXt +* nhng +*nh ,o =i sna +ha +h3ngf mYt +h;<ng trnh tLm gBi #- =Lt y%>
+.> 1hi 1hng +6 #ai i%n dM+h N- +mng 1hng +6 +*nh ,o \nh;ng +h;a +hr+ =J +hLy =3ng
1@t A>*s](
%Pu hSi th5"
CU> hVi 1) &Jy =;a ra F #t do tLi sao ngn ng C# #- mYt ngn ng #p trnh tctu
CU> hVi 2) lL N- CL[ Ni@t trt +ho t5 n-o N- t nghea +7a n6u
CU> hVi F) d;a ra +,+ ;o+ +< *n trong +h> trnh _Uy dOng +h;<ng trnhu
CU> hVi G) 0rong i%n dM+h dEng #Inh th #Inh n-o =;H+ sn d:ng =i i%n dM+h mJ ng>Kn (+s
N- #Inh n-y gBi +h;<ng trnh n-ou
CU> hVi Q) Ph.n mg rYng n-o m- +h3ng ta n%n sn d:ng +ho tp tin mJ ng>Kn C#u
CU> hVi v) MYt tp tin (t_t +hPa mJ ng>Kn C# +6 ph*i #- mYt tp tin mJ ng>Kn C# hHp #I
hay 1hngu C6 thi i%n dM+h =;H+ hay 1hngu
CU> hVi w) Ngn ng m,y #- gu ?hi i%n dM+h mJ ng>Kn C# ra tp tin ('_' th tp tin n-y #-
ngn ng gu
CU> hVi x) N@> thO+ thi mYt +h;<ng trnh =J i%n dM+h N- n6 1hng thO+ hiIn =3ng nh;
mong =Hi +7a +h3ng taf th =iD> g +h3ng ta +.n ph*i #-mu
CU> hVi y) MYt #ai t;<ng tO nh; %n d;oi th;Wng _>Xt hiIn 1hi n-ou
NgnNgC#
)N
NgnNgLpTrnhC#
my+od'(+s\1QfQ]) 'rror CS1$1$) N'wLin' in +onstan
CU> hVi 1$) 0Li sao ph*i 1hai ,o stati+ +ho h-m Main +7a #opu
CU> hVi 11) MYt mJ ng>Kn C# +6 ph*i +hPa trong +,+ #op hay #- +6 thi tKn tLi %n ngo-i #op
nh; CzC{{u
CU> hVi 12) So s,nh sO 1h,+ nha> +< *n gia C# N- CzC{{f C# Noi |aNaf hay Xt +P ngn
ng +Xp +ao n-o m- Ln =J i@tu
CU> hVi 1F) Con trV +6 +En =;H+ sn d:ng trong C# hay 1hngu N@> +6 th n6 =;H+ A>*n #t
nh; th@ n-ou
CU> hVi 1G) ?h,i niIm N- t nghea +7a nam'spa+' trong C#u diD> g _*y ra n@> nh; ngn
ng #p trnh 1hng ha trH nam'spa+'u
47i tT-
4-i tp 1) DCng trnh soLn th*o Njn *n mg +h;<ng trnh '_' m- ta =J i%n dM+h t5 +,+
+h;<ng trnh ng>Kn tr;o+ N- _'m sO 1h,+ nha> gia hai tp tin n-yf #;> t sao 1hi =6ng tp
tin n-y ta 1hng +hBn #;> tp tin(
4-i tp 2) Nhp N-o +h;<ng trnh sa> N- i%n dM+h n6( Cho i@t +h;<ng trnh thO+ hiIn =iD>
gu
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
class variables
{
public static void Main()
{
int radius = 4;
const double PI = 3.14159;
double circum, area;
area = PI * radius* radius;
circum = 2 * PI * radius;
// in kt qu
Console.WriteLine("Ban kinh = {0}, PI = {1}, radius, PI);
Console.WriteLine("Dien tich {0}, area);
Console.WriteLine("Chu vi {0}, circum);
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
4-i tp F) Nhp N-o +h;<ng trnh sa> N- i%n dM+h( Cho i@t +h;<ng trnh thO+ hiIn =iD> gu
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
class AClass
NgnNgC#
)-
NgnNgLpTrnhC#
{
static void Main()
{
int x, y;
for( x = 0; x < 10; x++, System.Console.Write("\n));
for( y = 0 ; y < 10; y++, System.Console.WriteLine("{0},y));
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
4-i tp G) Ch;<ng trnh sa> +6 +hPa #ai( Nhp N-o N- sna nhng #ai =6
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
4-i tp Q) Sna #ai N- i%n dM+h +h;<ng trnh sa>
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
class Test
{
pubic static void Main()
{
Console.WriteLine("Xin chao);
Consoile.WriteLine("Tam biet);
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
4-i tp v) Sna #ai N- i%n dM+h +h;<ng trnh sa>
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
class Test
{
pubic void Main()
{
Console.WriteLine(`Xin chao);
Consoile.WriteLine(`Tam biet);
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
4-i tp w) 8i@t +h;<ng trnh _>Xt ra -i th<)
NgnNgC#
)0
NgnNgLpTrnhC#
Rm Thng Ging
Rm xun lng lng trng soi,
Sng xun nc ln mu tri thm xun.
Gia dng bn bac vic qun
Khuya v bt ngt trng ngn dy thuyn.
H Ch Minh.
NgnNgC#
)=
NgnNgLpTrnhC#
C4/Nng
NlN TmNG NGN NG C#
2i_@ ' )iC@
2i_@ ' )iC@ n%& '(ng son
C4in Qi_@ ' )iC@
C4@&_n XZi c<c Qi_@ ' )iC@
ai3n HI 4png
G<n gi< trc n<c Xcn4 c4o gi3n
Hpng
2i_@ )iCt Qb
2i_@ c4@Mi QL t(
-cn4 '6n4
ai_@ t4`c
24o"ng trqng
C%@ )Cn4
P4%n n4<n4 Q4ng cf Xi!@ QiCn
P4%n n4<n4 cf Xi!@ QiCn
C%@ )Cn4 )r+
To<n t=
N6G[s+6c[
C<c c4F 'sn gibn 'cc4
C%@ 4ji k gIi tJ+
NnTngNgnNgC#
)A
NgnNgLpTrnhC#
Trong chFng trc ch$ng ta z t& hi3u &et chFng trnh *@ Fn giDn nhht. *hFng
trnh K cha 3 5in tD &et chFng trnh .i#t LYng ng>n ng? *@v cK !u2 nhi`u Chmn .;
chi ti#t z LQ !ua. po .SV trong chFng n;V ch$ng ta sH i sPu .;o t& hi3u chu tr$c .; c$
Ch2C ca ng>n ng? *@.
*hFng n;V sH thDo 7uSn .` h/ thng ki3u 5? 7i/uv ChPn Li/t gi?a ki3u 5? 7i/u UPV 5Wng
sXn {nh intv boolv string|} .i ki3u 5? 7i/u 5o ngi 5ong :nh nghda {7C haV chu tr$c 5o
ngi 7SC trnh tBo ra...}. Met s cF LDn kh2c .` 7SC trnh nh tBo .; sE 56ng Li#n 5? 7i/u haV
hYng cng Gc ` cSC cong .i chu tr$c 7i/t k9v chu\iv :nh 5anhv Li3u th4c .; cSu 7/nh.
Trong Chmn hai ca chFng hng 5cn .; &inh hOa .i/c sE 56ng 7/nh ChPn nh2nh ifE
switchv whilev do...whilev forv .; foreach. ; c2c to2n tE nh ChgC g2nv ChgC to2n 7ogicv
ChgC to2n !uan h/v .; to2n hOc...
Nh ch$ng ta z Li#t *@ 7; &et ng>n ng? hng i tGng rht &Bnhv .; c>ng .i/c ca
ngi 7SC trnh 7; k# thJa 3 tBo .; khai th2c c2c i tGng. po .SV 3 n_& .?ng .; Ch2t tri3n
tt ngi 7SC trnh cmn ChDi i tJ nh?ng Lc i 5mu ti9n t4c 7; i .;o t& hi3u nh?ng Chmn cF
LDn .; ct 7i nhht ca ng>n ng?.
Ki0u 2: ,i+u
*@ 7; ng>n ng? 7SC trnh &Bnh .` ki3u 5? 7i/uv &et ng>n ng? &Bnh .` ki3u 5? 7i/u 7; ChDi
khai L2o ki3u ca &\i i tGng khi tBo {ki3u s nguV9nv s thWcv ki3u chu\iv ki3u i`u
khi3n...} .; trnh Li9n 5:ch sH gi$C cho ngi 7SC trnh kh>ng L: 7\i khi chb cho ChgC &et 7oBi
ki3u 5? 7i/u cK th3 Gc g2n cho c2c ki3u 5? 7i/u kh2c. "i3u 5? 7i/u ca &et i tGng 7; &et
tIn hi/u 3 trnh Li9n 5:ch nhSn Li#t kIch thc ca &et i tGng {ki3u int cK kIch thc 7; N
LVt'} .; khD nqng ca nK {nh &et i tGng button cK th3 .Hv ChDn 4ng khi nhhnv...}.
TFng tW nh * haV wa.av *@ chia th;nh hai tSC hGC ki3u 5? 7i/u chInhu "i3u UPV 5Wng
sXn {Lui7ti in} &; ng>n ng? cung chC cho ngi 7SC trnh .; ki3u Gc ngi 5ong :nh nghda
{us'ri5'fin'5} 5o ngi 7SC trnh tBo ra.
*@ ChPn tSC hGC ki3u 5? 7i/u n;V th;nh hai 7oBiu "i3u 5? 7i/u gi2 tr: {.a7u'} .; ki3u 5?
7i/u tha& chi#u {r'f'r'nc'}. i/c ChPn chi n;V 5o sW kh2c nhau khi 7u ki3u 5? 7i/u gi2 tr: .;
ki3u 5? 7i/u tha& chi#u trong Le nh. ^i .i &et ki3u 5? 7i/u gi2 tr: th sH Gc 7u gi? kIch
thc thSt trong Le nh z chC Ch2t 7; stack. Trong khi K th :a chb ca ki3u 5? 7i/u tha&
chi#u th Gc 7u trong stack nhng i tGng thSt sW th 7u trong Le nh h'aC.
N#u ch$ng ta cK &et i tGng cK kIch thc rht 7n th .i/c 7u gi? ch$ng tr9n Le nh
h'aC rht cK Ichv trong chFng N sH trnh L;V nh?ng 7Gi Ich .; Lht 7Gi khi 7;& .i/c .i ki3u 5?
7i/u tha& chi#uv cn trong chFng n;V chb tSC trung ki3u 5? ki3u cF LDn haV ki3u UPV 5Wng
sXn.
2hi +h3u Tht cD c2c ki3u 5? 7i/u UPV 5Wng sXn 7; ki3u 5? 7i/u gi2 tr: ngoBi trJ c2c i
tGng .; chu\i. ; tht cD c2c ki3u 5o ngi 5ong :nh nghda ngoBi trJ ki3u chu tr$c `u 7;
ki3u 5? 7i/u tha& chi#u.
NnTngNgnNgC#
)T
NgnNgLpTrnhC#
Ngo;i ra *@ cng h\ trG &et ki3u con trQ *v nhng hi#& khi Gc sE 56ngv .; chb khi n;o
7;& .i/c .i nh?ng oBn &z 7/nh kh>ng Gc !uDn 7] {un&anag'5 co5'}. Mz 7/nh kh>ng
Gc !uDn 7] 7; c2c 7/nh Gc .i#t L9n ngo;i n`n .MS.NETv nh 7; c2c i tGng *jM.
Ki0u 2: ,i+u UPL 2Vng sWn
Ng>n ng? *@ a ra c2c ki3u 5? 7i/u UPV 5Wng sXn rht h?u 56ngv Cho hGC .i &et ng>n
ng? 7SC trnh hi/n Biv &\i ki3u 5? 7i/u Gc 2nh UB #n &et ki3u 5? 7i/u Gc h\ trG Lfi h/
thng U2c nhSn ng>n ng? chung {*o&&on +anguag' SC'cificationu *+S} trong MS.NET.
i/c 2nh UB c2c ki3u 5? 7i/u nguV9n thu ca *@ #n c2c ki3u 5? 7i/u ca .NET sH D& LDo
c2c i tGng Gc tBo ra trong *@ cK th3 Gc sE 56ng ng thi .i c2c i tGng Gc tBo
Lfi Lht c4 ng>n ng? kh2c Gc Li9n 5:ch Lfi .NETv nh 8.NET.
M\i ki3u 5? 7i/u cK &et sW U2c nhSn .; kIch thc kh>ng thaV iv kh>ng ging nh
*v int trong *@ 7u>n cK kIch thc 7; N LVt' Lfi . nK Gc 2nh UB tJ ki3u Int32 trong .
NET.
8Dng ).1 sau sH &> tD &et s c2c ki3u 5? 7i/u Gc UPV 5Wng sXn
2i_@ C# V. g&t[ 2i_@ .NET M t"
byte 1 Byte S nguV9n 5Fng kh>ng 5hu tJ 0i2--
char 2 Char "] tW lnico5'
bool 1 Boolean Zi2 tr: 7ogic true false
sbyte 1 Sbyte S nguV9n cK 5hu { tJ i12A #n 12=}
short 2 Int16 S nguV9n cK 5hu gi2 tr: tJ i)2=0A #n
)2=0=.
ushort 2 Uint16 S nguV9n kh>ng 5hu 0 0-.-)-
int N Int32 S nguV9n cK 5hu 2.1N=.NA).0N= .;
2.1N=.NA).0N=
uint N Uint32 S nguV9n kh>ng 5hu 0 N.2TN.T0=.2T-
float N Single "i3u 5hu chh& engv gi2 tr: UhC Ub tJ )vNEi
)A #n )vNE)Av .i = ch? s cK nghda..
double A Double "i3u 5hu chh& eng cK e chInh U2c ghC
>iv gi2 tr: UhC Ub tJ 1v=Ei)0A #n 1v=E)0Av
.i 1-v10 ch? s cK nghda.
decimal A Decimal *K e chInh U2c #n 2A con s .; gi2 tr: thSC
ChPnv Gc 5ong trong tInh to2n t;i chInhv
ki3u n;V i hQi ChDi cK hSu t s&t haV sMt
th'o sau gi2 tr:.
NnTngNgnNgC#
N0
NgnNgLpTrnhC#
long A Int64 "i3u s nguV9n cK 5hu cK gi2 tr: trong
khoDng u
iT.22).)=0.0)0.A-N.==-.A0A #n
T.22).)=2.0)0.A-N.==-.A0=
ulong A Uint64 S nguV9n kh>ng 5hu tJ 0 #n
0Uffffffffffffffff
4*ng F(1 ) M t* +,+ 1ii> d #iI> _Uy dOng s}n(
2hi +h3) "i3u gi2 tr: 7ogic chb cK th3 nhSn Gc gi2 tr: 7; true haV false &; th>i. Met gi2
tr: nguV9n kh>ng th3 g2n .;o &et Li#n ki3u 7ogic trong *@ .; kh>ng cK Lht c4 chuV3n i
ngm& :nh n;o. ^i`u n;V kh2c .i **v cho ChgC Li#n 7ogic Gc g2n gi2 tr: nguV9nv khi
K gi2 tr: nguV9n 0 7; false .; c2c gi2 tr: cn 7Bi 7; true.
%hQn ki0u 2: ,i+u
Th>ng thng 3 chOn &et ki3u 5? 7i/u nguV9n 3 sE 56ng nh shortv int haV long
thng 5Wa .;o e 7n ca gi2 tr: &un sE 56ng. I 56v &et Li#n ushort cK th3 7u gi? gi2 tr:
tJ 0 #n 0-.-)-v trong khi Li#n ulong cK th3 7u gi? gi2 tr: tJ 0 #n N.2TN.T0=.2T-v 5o K toV
.;o &i`n gi2 tr: ca ChB& .i sE 56ng Li#n &; chOn c2c ki3u 5? 7i/u thIch hGC nhht. "i3u 5?
7i/u int thng Gc sE 56ng nhi`u nhht trong 7SC trnh . .i kIch thc N LVt' ca nK cng
3 7u c2c gi2 tr: nguV9n cmn thi#t.
"i3u s nguV9n cK 5hu thng Gc 7Wa chOn sE 56ng nhi`u nhht trong ki3u s trJ khi cK 7]
5o chInh 2ng 3 sE 56ng ki3u 5? 7i/u kh>ng 5hu.
Vt6cQ HI H[6+
NnTngNgnNgC#
N1
NgnNgLpTrnhC#
Stack 7; &et chu tr$c 5? 7i/u 7u tr? th>ng tin 5Bng U#C chng t4c 7; .;o
sau ra trc {+ast <n %irst jut u +<%j}v i`u n;V ging nh ch$ng ta cK &et
chng c2c dav ta c4 U#C c2c da .;o chng .; khi 7hV ra th da n;o nY&
tr9n cong sH Gc 7SC ra trcv t4c 7; da .;o sau sH Gc 7hV ra trc.
Trong *@v ki3u gi2 tr: nh ki3u s nguV9n Gc chC Ch2t tr9n stackv PV 7;
.ong nh Gc thi#t 7SC 3 7u c2c gi2 tr:v .; .ong nh n;V Gc tha&
chi#u Lfi t9n ca Li#n.
"i3u tha& chi#u nh c2c i tGng th Gc chC Ch2t tr9n h'aC. "hi &et
i tGng Gc chC Ch2t tr9n h'aC th :a chb ca nK Gc trD .`v .; :a chb
n;V Gc g2n #n &et tha& chi#u.
Thbnh thoDng cF ch# thu go& sH hV i tGng trong stack sau khi &et
.ong trong stack Gc 2nh 5hu 7; k#t th$c. Th>ng thng &et .ong trong
stack Gc :nh nghda Lfi &et h;&. po Kv n#u ch$ng ta khai L2o &et
Li#n c6c Le trong &et h;& 7; &et i tGng th i tGng n;V sH 2nh 5hu
3 hV khi k#t th$c h;&.
Nh?ng i tGng tr9n h'aC sH Gc thu go& sau khi &et tha& chi#u cui
cong #n i tGng K Gc gOi.
*2ch tt nhht khi sE 56ng Li#n kh>ng 5hu 7; gi2 tr: ca Li#n 7u>n 7u>n 5Fngv Li#n n;V
thng th3 hi/n &et thuec tInh n;o K cK &i`n gi2 tr: 5Fng. I 56 khi cmn khai L2o &et Li#n
7u gi? tui ca &et ngi th ta 5ong ki3u byte {s nguV9n tJ 0i2--} . tui ca ngi
kh>ng th3 n;o P& Gc.
"i3u floatv doublev .; decimal a ra nhi`u &4c e kh2c nhau .` kIch thc cng nh e
chInh U2c.i thao t2c tr9n c2c ChPn s nhQ th ki3u float 7; thIch hGC nhht. TuV nhi9n 7u ]
rYng trnh Li9n 5:ch 7u>n 7u>n hi3u Lht c4 &et s thWc n;o cng 7; &et s ki3u double trJ khi
ch$ng ta khai L2o r r;ng. ^3 g2n &et s ki3u float th s ChDi cK k] tW f th'o sau.
float soFloat = 24f;
"i3u 5? 7i/u k] tW th3 hi/n c2c k] tW lnico5'v Lao g& c2c k] tW Fn giDnv k] tW th'o &z
lnico5' .; c2c k] tW tho2t kh2c Gc Lao trong nh?ng 5hu nh2V Fn. I 56v y 7; &et k] tW
Fn giDn trong khi u00N1 7; &et k] tW lnico5'. "] tW tho2t 7; nh?ng k] tW ac Li/t Lao g&
hai k] tW 7i9n ti#C trong K k] tW 5mu ti9n 7; 5hu chgo x. I 56v t 7; 5hu taL. 8Dng ).2 trnh
L;V c2c k] tW ac Li/t.
2L t( t ng4u6
\ phu nh2V Fn
\ phu nh2V kgC
\\ phu chgo
\0 "] tW null
\a y7'rt
NnTngNgnNgC#
N2
NgnNgLpTrnhC#
\b 8acksCac'
\f Sang trang for& f''5
\n png &i
\r ^mu 5ng
\t TaL ngang
\v TaL 5Oc
4*ng F(2 ) C,+ 1ii> 1t tO =^+ iIt(
%huL0n i c/c ki0u 2: ,i+u
Nh?ng i tGng ca &et ki3u 5? 7i/u n;V cK th3 Gc chuV3n sang nh?ng i tGng ca
&et ki3u 5? 7i/u kh2c th>ng !ua cF ch# chuV3n i tng &inh haV ngm& :nh. *huV3n i
nhm& :nh Gc thWc hi/n &et c2ch tW engv trnh Li9n 5:ch sH thWc hi/n c>ng .i/c n;V. *n
chuV3n i tng &inh 5in ra khi ch$ng ta g2n gC &et gi2 tr: cho ki3u 5? 7i/u kh2c.
i/c chuV3n i gi2 tr: ngm& :nh Gc thWc hi/n &et c2ch tW eng .; D& LDo 7; kh>ng
&ht th>ng tin. I 56v ch$ng ta cK th3 g2n ngm& :nh &et s ki3u short {2 LVt'} .;o &et s
ki3u int {N LVt'} &et c2ch ngm& :nh. Sau khi g2n ho;n to;n kh>ng &ht 5? 7i/u . Lht c4 gi2
tr: n;o ca short cng thuec .` intu
short x = 10;
int y = x; // chuyn di ngm dinh
TuV nhi9nv n#u ch$ng ta thWc hi/n chuV3n i ngGc 7Biv ch_c ch_n ch$ng ta sH L: &ht th>ng
tin. N#u gi2 tr: ca s nguV9n K 7n hFn )2.=0= th nK sH L: c_t khi chuV3n i. Trnh Li9n
5:ch sH kh>ng thWc hi/n .i/c chuV3n i ngm& :nh tJ s ki3u int sang s ki3u shortu
short x;
int y = 100;
x = y; // Khng bin dich, li !!!
^3 kh>ng L: 7\i ch$ng ta ChDi 5ong 7/nh g2n tng &inhv oBn &z tr9n Gc .i#t 7Bi nh sauu
short x;
int y = 500;
x = (short) y; // p kiu tng minh, trnh bin dich khng bo li
4in *7 hXng
Met Li#n 7; &et .ong 7u tr? .i &et ki3u 5? 7i/u. Trong .I 56 trc cD Uv .; y i`u 7;
Li#n. 8i#n cK th3 Gc g2n gi2 tr: .; cng cK th3 thaV i gi2 tr: khi thWc hi/n c2c 7/nh trong
chFng trnh.
^3 tBo &et Li#n ch$ng ta ChDi khai L2o ki3u ca Li#n .; g2n cho Li#n &et t9n 5uV nhht. 8i#n
cK th3 Gc khfi tBo gi2 tr: ngaV khi Gc khai L2ov haV nK cng cK th3 Gc g2n &et gi2 tr:
&i .;o Lht c4 7$c n;o trong chFng trnh. I 56 ).1 sau &inh hOa sE 56ng Li#n.
89 d: F(1) ?hgi tLo N- g,n gi, trM =@n mYt i@n(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
NnTngNgnNgC#
N)
NgnNgLpTrnhC#
class MinhHoaC3
{
static void Main()
{
int bien1 = 9;
System.Console.WriteLine("Sau khi khoi tao: bien1 ={0}, bien1);
bien1 = 15;
System.Console.WriteLine("Sau khi gan: bien1 ={0}, bien1);
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
Sau khi khoi tao: bien1 = 9
Sau khi gan: bien1 = 15
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
NgaV khi khai L2o Li#n ta z g2n gi2 tr: 7; T cho Li#nv khi Uuht Li#n n;V th Li#n cK gi2 tr: 7; T.
ThWc hi/n ChgC g2n Li#n cho gi2 tr: &i 7; 1- th Li#n sH cK gi2 tr: 7; 1- .; Uuht k#t !uD 7; 1-.
Y/n gi/ tr6 U/c 6nh cho Iin
*@ i hQi c2c Li#n ChDi Gc khfi tBo trc khi Gc sE 56ng. ^3 ki3& tra 7uSt n;V
ch$ng ta thaV i 5ng 7/nh khfi tBo Li#n Li'n1 trong .I 56 ).1 nh sauu
int bien1;
.; gi? nguV9n Chmn cn 7Bi ta Gc .I 56 ).2u
89 d: F(2) Sn d:ng mYt i@n 1hng 1hgi tLo(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
class MinhHoaC3
{
static void Main()
{
int bien1;
System.Console.WriteLine("Sau khi khoi tao: bien1 ={0}, bien1);
bien1 = 15;
System.Console.WriteLine("Sau khi gan: bien1 ={0}, bien1);
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
"hi Li9n 5:ch oBn chFng trnh tr9n th trnh Li9n 5:ch *@ sH th>ng L2o &et 7\i sauu
...error CS0165: Use of unassigned local variable `bien1
NnTngNgnNgC#
NN
NgnNgLpTrnhC#
i/c sE 56ng Li#n khi cha Gc khfi tBo 7; kh>ng hGC 7/ trong *@. I 56 ).2 tr9n kh>ng hGC
7/.
TuV nhi9n kh>ng nhht thi#t 7$c n;o ch$ng ta cng ChDi khfi tBo Li#n. Nhng 3 5ong Gc th
L_t Luec ChDi g2n cho ch$ng &et gi2 tr: trc khi cK &et 7/nh n;o tha& chi#u #n Li#n K.
^i`u n;V Gc gOi 7; g2n gi2 tr: U2c :nh cho Li#n .; *@ L_t Luec ChDi thWc hi/n i`u n;V.
I 56 ).) &inh hOa &et chFng trnh $ng.
89 d: F(F) 4i@n 1hng =;H+ 1hi tLo nh;ng sa> =6 =;H+ g,n gi, trM(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
class MinhHoaC3
{
static void Main()
{
int bien1;
bien1 = 9;
System.Console.WriteLine("Sau khi khoi tao: bien1 ={0}, bien1);
bien1 = 15;
System.Console.WriteLine("Sau khi gan: bien1 ={0}, bien1);
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
ZXng
[Yng cng 7; &et Li#n nhng gi2 tr: ca hYng kh>ng thaV i. 8i#n 7; c>ng c6 rht &Bnhv
tuV nhi9n khi 7;& .i/c .i &et gi2 tr: Gc :nh nghda 7; kh>ng thaV iv ta ChDi D& LDo gi2
tr: ca nK kh>ng Gc thaV i trong sut chFng trnh. I 56v khi 7SC &et chFng trnh thI
nghi/& hKa hOc 7i9n !uan #n nhi/t e s>iv haV nhi/t e >ng ca ncv chFng trnh cmn
khai L2o hai Li#n 7; DoSoi .; DoDongv nhng kh>ng cho ChgC gi2 tr: ca hai Li#n n;V L: thaV
i haV L: g2n. ^3 ngqn ngJa .i/c g2n gi2 tr: kh2cv ta ChDi sE 56ng Li#n ki3u hYng.
[Yng Gc ChPn th;nh La 7oBiu gi2 tr: hYng {7it'ra7}v Li3u tGng hYng {sV&Lo7ic constants}v
ki3u 7i/u k9 {'nu&'rations}.
Gi< trc 4pngu ta cK &et cPu 7/nh g2n nh sauu
x = 100;
Zi2 tr: 100 7; gi2 tr: hYng. Zi2 tr: ca 100 7u>n 7; 100. Ta kh>ng th3 g2n gi2 tr: kh2c cho 100
Gc.
ai_@ t/0ng 4pngu g2n &et t9n cho &et gi2 tr: hYngv 3 tBo &et Li3u tGng hYng 5ong tJ khKa
const .; c$ Ch2C sauu
<const> <type> <tn hng> = <gi tri>;
NnTngNgnNgC#
N-
NgnNgLpTrnhC#
Met Li3u tGng hYng ChDi Gc khfi tBo khi khai L2ov .; chb khfi tBo 5uV nhht &et 7mn trong
sut chFng trnh .; kh>ng Gc thaV i. I 56u
const int DoSoi = 100;
Trong khai L2o tr9nv )2 7; &et hYng s .; DoSoi 7; &et Li3u tGng hYng cK ki3u nguV9n. I
56 ).N &inh hOa .i/c sE 56ng nh?ng Li3u tGng hYng.
8i d: F(G) Sn d:ng ii> t;Hng hbng(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
class MinhHoaC3
{
static void Main()
{
const int DoSoi = 100; // C
const int DoDong = 0; // C
System.Console.WriteLine( "Do dong cua nuoc {0}, DoDong );
System.Console.WriteLine( "Do soi cua nuoc {0}, DoSoi );
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
Do dong cua nuoc 0
Do soi cua nuoc 100
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
I 56 ).N tBo ra hai Li3u tGng hYng ch4a gi2 tr: nguV9nu DoSoi .; DoDongv th'o !ui t_c at
t9n hYng th t9n hYng thng Gc at th'o c$ Ch2C 1asca7v nhng i`u n;V kh>ng i hQi Lfi
ng>n ng? n9n ta cK th3 at toV ].
i/c 5ong Li3u th4c hYng n;V sH 7;& cho chFng trnh Gc .i#t tqng th9& Chmn ] nghda
cong .i sW 5 hi3u. ThSt sW ch$ng ta cK th3 5ong hYng s 7; 0 .; 100 thaV th# cho hai Li3u
tGng hYng tr9nv nhng khi K chFng trnh kh>ng Gc 5 hi3u .; kh>ng Gc tW nhi9n 7_&.
Trnh Li9n 5:ch kh>ng Lao gi chhC nhSn &et 7/nh g2n gi2 tr: &i cho &et Li3u tGng hYng.
I 56 ).N tr9n cK th3 Gc .i#t 7Bi nh sau
(((
class MinhHoaC3
{
static void Main()
{
const int DoSoi = 100; // C
const int DoDong = 0; // C
System.Console.WriteLine( "Do dong cua nuoc {0}, DoDong );
NnTngNgnNgC#
N0
NgnNgLpTrnhC#
System.Console.WriteLine( "Do soi cua nuoc {0}, DoSoi );
DoSoi = 200;
}
}
"hi K trnh Li9n 5:ch sH Ch2t sinh &et 7\i sauu
error CS0131: he !e"t-hand side o" an assign#ent #ust be a $ariab!e%
&ro&ert' or inde(er.
Ki0u ,i+t k5
"i3u 7i/t k9 Fn giDn 7; tSC hGC c2c t9n hYng cK gi2 tr: kh>ng thaV i {thng Gc gOi 7;
5anh s2ch 7i/t k9}.
Trong .I 56 ).Nv cK hai Li3u tGng hYng cK !uan h/ .i nhauu
const int DoDong = 0;
const int DoSoi = 100;
po &6c Ich &f reng ta &ong &un th9& &et s hYng s kh2c .;o 5anh s2ch tr9nv nh c2c
hYng sauu
const int DoNong = 60;
const int DoAm = 40;
const int DoNguoi = 20;
*2c Li3u tGng hYng tr9n i`u cK ] nghda !uan h/ .i nhauv cong nKi .` nhi/t e ca ncv
khi khai L2o tJng hYng tr9n cK . cng k`nh .; kh>ng Gc 7i9n k#t chat chH cho 7_&. ThaV
.;o K *@ cung chC ki3u 7i/t k9 3 giDi !uV#t .hn ` tr9nu
enum NhietDoNuoc
{
DoDong = 0,
DoNguoi = 20,
DoAm = 40,
DoNong = 60,
DoSoi = 100,
}
M\i ki3u 7i/t k9 cK &et ki3u 5? 7i/u cF sfv ki3u 5? 7i/u cK th3 7; Lht c4 ki3u 5? 7i/u nguV9n
n;o nh intv shortv 7ong... tuV nhi9n ki3u 5? 7:9u ca 7i/t k9 kh>ng chhC nhSn ki3u k] tW. ^3
khai L2o &et ki3u 7i/t k9 ta thWc hi/n th'o c$ Ch2C sauu
[thuc tnh] [b sung] enum <tn lit k> [:kiu co s] {danh sch cc thnh phn
lit k};
Th;nh Chmn thuec tInh .; L sung 7; tW chOn sH Gc trnh L;V trong Chmn sau ca s2ch.
Trong Chmn n;V ch$ng ta sH tSC trung .;o Chmn cn 7Bi ca khai L2o. Met ki3u 7i/t k9 L_t mu
.i tJ khKa enumv ti#C sau 7; &et :nh 5anh cho ki3u 7i/t k9u
NnTngNgnNgC#
N=
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
enum NhietDoNuoc
Th;nh Chmn ki3u cF sf chInh 7; ki3u khai L2o cho c2c &6c trong ki3u 7i/t k9. N#u LQ !ua
th;nh Chmn n;V th trnh Li9n 5:ch sH g2n gi2 tr: &ac :nh 7; ki3u nguV9n intv tuV nhi9n ch$ng
ta cK th3 sE 56ng Lht c4 ki3u nguV9n n;o nh ushort haV longv..ngoBi trJ ki3u k] tW. ^oBn .I
56 sau khai L2o &et ki3u 7i/t k9 sE 56ng ki3u cF sf 7; s nguV9n kh>ng 5hu uintu
enum KichThuoc :uint
{
Nho = 1,
Vua = 2,
Lon = 3,
}
+u ] 7; khai L2o &et ki3u 7i/t k9 ChDi k#t th$c LYng &et 5anh s2ch 7i/t k9v 5anh s2ch 7i/t k9
n;V ChDi cK c2c hYng Gc g2nv .; &\i th;nh Chmn ChDi ChPn c2ch nhau 5hu ChMV.
Ta .i#t 7Bi .I 56 &inh hOa )iN nh sau.
89 d: F(Q) Sn d:ng 1ii> #iIt 1% =i =<n gi*n +h;<ng trnh(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
class MinhHoaC3
{
// Khai bo kiu lit k
enum NhietDoNuoc
{
DoDong = 0,
DoNguoi = 20,
DoAm = 40,
DoNong = 60,
DoSoi = 100,
}
static void Main()
{
System.Console.WriteLine( "Nhiet do dong: {0}, NhietDoNuoc.DoDong);
System.Console.WriteLine( "Nhiet do nguoi: {0}, NhietDoNuoc.DoNguoi);
System.Console.WriteLine( "Nhiet do am: {0}, NhietDoNuoc.DoAm);
System.Console.WriteLine( "Nhiet do nong: {0}, NhietDoNuoc.DoNong);
System.Console.WriteLine( "Nhiet do soi: {0}, NhietDoNuoc.DoSoi);
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*u
NnTngNgnNgC#
NA
NgnNgLpTrnhC#
Nhiet do dong: 0
Nhiet do nguoi: )0
Nhiet do a#: *0
Nhiet do nong: +0
Nhiet do soi: 100
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
M\i th;nh Chmn trong ki3u 7i/t k9 tFng 4ng .i &et gi2 tr: sv trong trng hGC n;V 7; &et
s nguV9n. N#u ch$ng ta kh>ng khfi tBo cho c2c th;nh Chmn n;V th ch$ng sH nhSn c2c gi2 tr:
ti#C th'o .i th;nh Chmn mu ti9n 7; 0.
Ta U'& thE khai L2o sauu
enum Thutu
{
ThuNhat,
ThuHai,
ThuBa = 10,
ThuTu
}
"hi K gi2 tr: ca ThuNhat 7; 0v gi2 tr: ca ThuHai 7; 1v gi2 tr: ca ThuBa 7; 10 .; gi2 tr: ca
ThuTu 7; 11.
"i3u 7i/t k9 7; &et ki3u hnh th4c 5o K L_t Luec ChDi thWc hi/n ChgC chuV3n i tng &inh
.i c2c ki9u gi2 tr: nguV9nu
int x = (int) ThuTu.ThuNhat;
Ki0u chu[i k\ tV
"i3u 5? 7i/u chu\i kh2 thPn thi/n .i ngi 7SC trnh trong Lht c4 ng>n ng? 7SC trnh n;ov
ki3u 5? 7i/u chu\i 7u gi? &et &Dng nh?ng k] tW.
^3 khai L2o &et chu\i ch$ng ta sE 56ng tJ kho2 string tFng tW nh c2ch tBo &et th3 hi/n
ca Lht c4 i tGng n;ou
string chuoi;
Met hYng chu\i Gc tBo LYng c2ch at c2c chu\i trong 5hu nh2V >iu
"Xin chao
^PV 7; c2ch chung 3 khfi tBo &et chu\i k] tW .i gi2 tr: hYngu
string chuoi = "Xin chao
"i3u chu\i sH Gc ` cSC sPu trong chFng 10.
]6nh 2anh
^:nh 5anh 7; t9n &; ngi 7SC trnh chb :nh cho c2c ki3u 5? 7i/uv c2c ChFng th4cv Li#nv
hYngv haV i tGng.... Met :nh 5anh ChDi L_t mu .i &et k] tW ch? c2i haV 5hu gBch 5iv
c2c k] tW cn 7Bi ChDi 7; k] tW ch? c2iv ch? sv 5hu gBch 5i.
NnTngNgnNgC#
NT
NgnNgLpTrnhC#
Th'o !ui c at t9n ca Microsoft th ` ngh: sE 56ng +3 ph,p #L+ =- {ca&'7 notation} L_t
mu LYng k] tW thng 3 at t9n cho c2c Li#n 7; +3 ph,p Pas+a# {1asca7 notation} .i k] tW
mu ti9n hoa cho c2ch at t9n h;& .; hmu h#t c2c :nh 5anh cn 7Bi. [mu nh Microsoft kh>ng
cn 5ong c$ Ch2C [ungarV nh iSoNguyen haV 5hu gBch 5i BienNguyen 3 at c2c :nh
5anh.
*2c :nh 5anh kh>ng Gc trong .i c2c tJ kho2 &; *@ a rav 5o K ch$ng ta kh>ng th3 tBo
c2c Li#n cK t9n nh class haV int Gc. Ngo;i rav *@ cng ChPn Li/t c2c k] tW thng .; k] tW
hoa . .SV *@ U'& hai Li#n bienNguyen .; bienguyen 7; ho;n to;n kh2c nhau.
4i0u th1c
Nh?ng cPu 7/nh &; thWc hi/n .i/c 2nh gi2 &et gi2 tr: gOi 7; Li3u th4c. Met ChgC g2n &et
gi2 tr: cho &et Li#n cng 7; &et Li3u th4cu
var1 = 24;
Trong cPu 7/nh tr9n ChgC 2nh gi2 haV :nh 7Gng chInh 7; ChgC g2n cK gi2 tr: 7; 2N cho Li#n
var1. +u ] 7; to2n tE g2n {x} kh>ng ChDi 7; to2n tE so s2nh. po .SV khi sE 56ng to2n tE n;V
th Li#n L9n tr2i sH nhSn gi2 tr: ca Chmn L9n ChDi. *2c to2n tE ca ng>n ng? *@ nh ChgC so
s2nh haV ChgC g2n sH Gc trnh L;V chi ti#t trong &6c to2n tE ca chFng n;V.
po var1 = 24 7; &et Li3u th4c Gc :nh gi2 tr: 7; 2N n9n Li3u th4c n;V cK th3 Gc U'& nh
Chmn L9n ChDi ca &et Li3u th4c g2n kh2cu
var2 = var1 = 24;
+/nh n;V sH Gc thWc hi/n tJ L9n ChDi sang khi K Li#n var1 sH nhSn Gc gi2 tr: 7; 2N .;
ti#C sau K th var2 cng Gc nhSn gi2 tr: 7; 2N. po .SV cD hai Li#n `u cong nhSn &et gi2
tr: 7; 2N. *K th3 5ong 7/nh tr9n 3 khfi tBo nhi`u Li#n cK cong &et gi2 tr: nhu
a = b = c = d = 24;
Kho=ng tr^ng ($hit#s-ac#)
Trong ng>n ng? *@v nh?ng khoDng tr_ngv khoDng taL .; c2c 5ng Gc U'& nh 7;
khoDng tr_ng {(hit'sCac'}v ging nh t9n gOi . chb Uuht hi/n nh?ng khoDng tr_ng 3 Bi 5i/n
cho c2c k] tW K. *@ sH LQ !ua tht cD c2c khoDng tr_ng Kv 5o .SV ch$ng ta cK th3 .i#t nh
sauu
var1 = 24;
haV
var1 = 24 ;
.; trnh Li9n 5:ch *@ sH U'& hai cPu 7/nh tr9n 7; ho;n to;n ging nhau.
TuV nhi9n 7u ] 7; khoDng tr_ng trong &et chu\i sH kh>ng Gc LQ !ua. N#u ch$ng ta .i#tu
System.WriteLine("Xin chao!);
&\i khoDng tr_ng f gi?a hai ch? sXint .; schaot `u Gc i UE Lnh thng nh c2c k] tW
kh2c trong chu\i.
NnTngNgnNgC#
-0
NgnNgLpTrnhC#
[mu h#t .i/c sE 56ng khoDng tr_ng nh &et sW toV ] ca ngi 7SC trnh. ^i`u ct V#u 7; .i/c
sE 56ng khoDng tr_ng sH 7;& cho chFng trnh 5 nhn 5 Oc hFn *ng nh khi ta .i#t &et
.qn LDn trong MS ~or5 n#u kh>ng trnh L;V tt th sH khK Oc .; gPV &ht cD& tnh cho
ngi U'&. *n i .i trnh Li9n 5:ch th .i/c 5ong haV kh>ng 5ong khoDng tr_ng 7; kh>ng
kh2c nhau.
TuV nhi9nv cng cmn 7u ] khi sE 56ng khoDng tr_ng nh sauu
int x = 24;
tFng tW nhu
int x=24;
nhng kh>ng ging nhu
intx=24;
Trnh Li9n 5:ch nhSn Li#t Gc c2c khoDng tr_ng f hai L9n ca ChgC g2n 7; Ch6 .; cK th3 LQ
!uav nhng khoDng tr_ng gi?a khai L2o ki3u .; t9n Li#n th kh>ng ChDi Ch6 haV th9& &; L_t
Luec ChDi cK ti thi3u &et khoDng tr_ng. ^i`u n;V kh>ng cK g Lht hGC 7]v . khoDng tr_ng
cho ChgC trnh Li9n 5:ch nhSn Li#t Gc tJ kho2 int .; kh>ng th3 n;o nhSn Gc intx.
TFng tW nh **v trong *@ cPu 7/nh Gc k#t th$c .i 5hu chh& ChMV ;x. po .SV cK th3
&et cPu 7/nh tr9n nhi`u 5ngv .; &et 5ng cK th3 nhi`u cPu 7/nh nhng nhht thi#t 7; hai cPu
7/nh ChDi c2ch nhau &et 5hu chh& ChMV.
%Pu ,+nh (stat#"#nt)
Trong *@ &et chb 5cn 7SC trnh mV Gc gOi 7; cPu 7/nh. *hFng trnh Lao g& nhi`u
cPu 7/nh tumn tW .i nhau. M\i cPu 7/nh ChDi k#t th$c .i &et 5hu chh& ChMVv .I 56 nhu
int x; // mt cu lnh
x = 32; // cu lnh khc
int y =x; // dy cng l mt cu lnh
Nh?ng cPu 7/nh n;V sH Gc UE 7] th'o th4 tW. ^mu ti9n trnh Li9n 5:ch L_t mu f .: trI mu
ca 5anh s2ch c2c cPu 7/nh .; 7mn 7Gt i tJng cPu 7/nh cho #n 7/nh cui congv tuV nhi9n chb
$ng cho trng hGC c2c cPu 7/nh tumn tW kh>ng ChPn nh2nh.
*K hai 7oBi cPu 7/nh ChPn nh2nh trong *@ 7; u ChPn nh2nh kh>ng cK i`u ki/n {uncon5itiona7
Lranching stat'&'nt} .; ChPn nh2nh cK i`u ki/n {con5itiona7 Lranching stat'&'nt}.
Ngo;i ra cn cK c2c cPu 7/nh 7;& cho &et s oBn chFng trnh Gc thWc hi/n nhi`u 7mnv c2c
cPu 7/nh n;V Gc gOi 7; cPu 7/nh 7aC haV .ng 7aC. 8ao g& c2c 7/nh 7aC forv whilev dov inv
.; each sH Gc ` cSC ti trong &6c ti#C th'o.
Sau PV ch$ng ta sH U'& Ugt hai 7oBi 7/nh ChPn nh2nh Ch Li#n nhht trong 7SC trnh *@.
.hPn nh/nh kh9ng cG iCu ki+n
1hPn nh2nh kh>ng cK i`u ki/n cK th3 tBo ra LYng hai c2chu gOi &et h;& .; 5ong tJ kho2
ChPn nh2nh kh>ng i`u ki/n.
O 2Bi h-m
NnTngNgnNgC#
-1
NgnNgLpTrnhC#
"hi trnh Li9n 5:ch UE 7] #n t9n ca &et h;&v th sH ngng thWc hi/n h;& hi/n thi &; L_t
mu ChPn nh2nh 53 tBo &et gOi h;& &i. Sau khi h;& .Ja tBo thWc hi/n Uong .; trD .` &et
gi2 tr: th trnh Li9n 5:ch sH ti#C t6c thWc hi/n 5ng 7/nh ti#C sau ca h;& Lan mu. .I 56 ).0
&inh hOa cho .i/c ChPn nh2nh khi gOi h;&.
89 d: F(v) 2Bi mYt h-m(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
class GoiHam
{
static void Main()
{
Console.WriteLine( "Ham Main chuan bi goi ham Func()... );
Func();
Console.WriteLine( "Tro lai ham Main() );
}
static void Func()
{
Console.WriteLine( "---->Toi la ham Func()...);
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*u
,a# Main chuan bi goi ha# -unc./...
----0oi !a ha# -unc./...
ro !ai ha# Main./
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
+ung chFng trnh thWc hi/n L_t mu tJ h;& Main UE 7] #n 5ng 7/nh Func()v 7/nh Func()
thng Gc gOi 7; &et 7i gOi h;&. TBi i3& n;V 7ung chFng trnh sH rH nh2nh 3 thWc
hi/n h;& .Ja gOi. Sau khi thWc hi/n Uong h;& Funcv th chFng trnh !uaV 7Bi h;& Main .;
thWc hi/n cPu 7/nh ngaV sau cPu 7/nh gOi h;& Func.
O 05 1ho, phUn nh,nh 1hng =iD> 1iIn
^3 thWc hi/n ChPn nh2nh ta gOi &et trong c2c tJ khKa sauu gotov breakv continuev returnv
statementthrow. i/c trnh L;V c2c tJ khKa ChPn nh2nh kh>ng i`u ki/n n;V sH Gc ` cSC
trong chFng ti#C th'o. Trong Chmn n;V chb ` cSC chung kh>ng i .;o chi ti#t.
.hPn nh/nh cG iCu ki+n
1hPn nh2nh cK i`u ki/n Gc tBo Lfi c2c 7/nh i`u ki/n. *2c tJ khKa ca c2c 7/nh n;V
nh u ifv elsev switch. SW ChPn nh2nh chb Gc thWc hi/n khi Li3u th4c i`u ki/n ChPn nh2nh
Gc U2c :nh 7; $ng.
NnTngNgnNgC#
-2
NgnNgLpTrnhC#
O CU> #Inh iT((('#s'
*Pu 7/nh ChPn nh2nh if...else 5Wa tr9n &et i`u ki/n. ^i`u ki/n 7; &et Li3u th4c sH Gc
ki3& tra gi2 tr: ngaV khi L_t mu gaC cPu 7/nh K. N#u i`u ki/n Gc ki3& tra 7; $ngv th cPu
7/nh haV &et khi c2c cPu 7/nh L9n trong thPn ca cPu 7/nh if Gc thWc hi/n.
Trong cPu i`u ki/n if...else th else 7; Chmn toV chOn. *2c cPu 7/nh L9n trong thPn ca else
chb Gc thWc hi/n khi i`u ki/n ca if 7; sai. po .SV khi cPu 7/nh mV if...else Gc 5ong
th chb cK &et trong hai if hoac else Gc thWc hi/n. Ta cK c$ Ch2C cPu i`u ki/n if... else
sauu
if (biu thc diu kin)
<Khi lnh thuc hin khi diu kin dng>
[else
<Khi lnh thuc hin khi diu kin sai>]
N#u c2c cPu 7/nh trong thPn ca if haV else &; 7n hFn &et 7/nh th c2c 7/nh n;V ChDi Gc
Lao trong &et khi 7/nhv t4c 7; ChDi nY& trong 5hu khi u
if (biu thc diu kin)
{
<lnh 1>
<lnh 2>
....
}
[else
{
<lnh 1>
<lnh 2>
...
}]
Nh trnh L;V L9n tr9n 5o else 7; Chmn toV chOn n9n Gc at trong 5hu ngoac .u>ng ....
Minh hOa ).= L9n 5i c2ch sE 56ng cPu 7/nh if...else.
89 d: F(w) DCng +U> #Inh =iD> 1iIn iT((('#s'(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
class ExIfElse
{
static void Main()
{
int var1 = 10;
int var2 = 20;
if ( var1 > var2)
NnTngNgnNgC#
-)
NgnNgLpTrnhC#
{
Console.WriteLine( "var1: {0} > var2:{1}, var1, var2);
}
else
{
Console.WriteLine( "var2: {0} > var1:{1}, var2, var1);
}
var1 = 30;
if ( var1 > var2)
{
var2 = var1++;
Console.WriteLine( "Gan gia tri var1 cho var2);
Console.WriteLine( "Tang bien var1 len mot );
Console.WritelLine( "Var1 = {0}, var2 = {1}, var1, var2);
}
else
{
var1 = var2;
Console.WriteLine( "Thiet lap gia tri var1 = var2 );
Console.WriteLine( "var1 = {0}, var2 = {1}, var1, var2 );
}
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*u
1an gia tri $ar1 cho $ar)
ang bien $ar1 !en #ot
2ar1 = 31% $ar) = 30
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Trong .I 56 ).= tr9nv cPu 7/nh if mu ti9n sH ki3& tra U'& gi2 tr: ca var1 cK 7n hFn gi2 tr:
ca var2 kh>ng. 8i3u th4c i`u ki/n n;V sE 56ng to2n tE !uan h/ 7n hFn {}v c2c to2n tE
kh2c nh nhQ hFn {}v haV LYng {==}. *2c to2n tE n;V thng UuV9n Gc sE 56ng trong 7SC
trnh .; k#t !uD trD 7; gi2 tr: $ng haV sai.
i/c ki3& tra U2c :nh gi2 tr: var1 7n hFn var2 7; sai {. var1 10 trong khi var2 20}v
khi K c2c 7/nh trong else sH Gc thWc hi/nv .; c2c 7/nh n;V in ra &;n hnhu
var2: 20 > var1: 10
NnTngNgnNgC#
-N
NgnNgLpTrnhC#
Ti#C th'o #n cPu 7/nh if th4 haiv sau khi thWc hi/n 7/nh g2n gi2 tr: ca var1 )0v 7$c n;V
i`u ki/n if $ng n9n c2c cPu 7/nh trong khi if sH Gc thWc hi/n .; k#t !uD 7; in ra La 5ng
sauu
Gan gia tri var1 cho var2
Tang bien var1 len mot
Var1 = 31, var2 = 30
O CU> #Inh if #Kng nha>
*2c 7/nh i`u ki/n if cK th3 7ng nhau 3 Ch6c .6 cho .i/c UE 7] c2c cPu i`u ki/n Ch4c
tBC. i/c n;V cng thng UuV9n gaC khi 7SC trnh. ZiD sE ch$ng ta cmn .i#t &et chFng trnh
cK V9u cmu U2c :nh tnh trBng k#t h>n ca &et c>ng 5Pn 5Wa .;o c2c th>ng tin nh tuiv gii
tInhv .; tnh trBng h>n nhPnv 5Wa tr9n &et s th>ng tin nh sauu
N#u c>ng 5Pn 7; na& th e tui cK th3 k#t h>n 7; 20 .i i`u ki/n 7; cha cK gia nh.
N#u c>ng 5Pn 7; n? th e tui cK th3 k#t h>n 7; 1T cng .i i`u ki/n 7; cha cK gia
nh.
Tht cD c2c c>ng 5Pn cK tui nhQ hFn 1T i`u kh>ng Gc k#t h>n.
pWa tr9n c2c V9u cmu tr9n ta cK th3 5ong c2c 7/nh if 7ng nhau 3 thWc hi/n. I 56 ).A sau sH
&inh hOa cho .i/c thWc hi/n c2c V9u cmu tr9n.
89 d: F(x) C,+ #Inh if #Kng nha>(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
class TinhTrangKetHon
{
static void Main()
{
int tuoi;
bool coGiaDinh; // 0: cha c gia dnh; 1: d c gia dnh
bool gioiTinh; // 0: gii tnh n; 1: gii tnh nam
tuoi = 24;
coGiaDinh = false; // cha c gia dnh
gioiTinh = true; // nam
if ( tuoi >= 19)
{
if ( coGiaDinh == false)
{
if ( gioiTinh == false) // nu
Console.WriteLine(" Nu co the ket hon);
else // nam
NnTngNgnNgC#
--
NgnNgLpTrnhC#
if (tuoi >19) // phi ln hon 19 tuoi mi doc kt hn
Console.WriteLine(" Nam co the ket hon);
}
else // da co gia dinh
Console.WriteLine(" Khong the ket hon nua do da ket hon);
}
else // tuoi < 19
Console.WriteLine(" Khong du tuoi ket hon );
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*u
Na# co the ket hon
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Th'o trnh tW ki3& tra th cPu 7/nh if mu ti9n Gc thWc hi/nv Li3u th4c i`u ki/n $ng 5o
tui cK gi2 tr: 7; 2N 7n hFn 1T. "hi K khi 7/nh trong if sH Gc thWc thi. trong khi n;V
7Bi Uuht hi/n &et 7/nh if kh2c 3 ki3& tra tnh trBng U'& ngi K z cK gia nh chav k#t
!uD i`u ki/n if 7; $ng . coGiaDinh false n9n Li3u th4c so s2nh coGiaDinh == false sH
trD .` gi2 tr: $ng. Ti#C t6c Ugt U'& gii tInh ca ngi K 7; na& haV n?v . chb cK na& tr9n
1T tui &i Gc k#t h>n. "#t !uD ki3& tra 7; na& n9n cPu 7/nh if th4 La Gc thWc hi/n .;
Uuht ra k#t !uD u sNa# co the ket hont.
O CU> #Inh swit+h
"hi cK !u2 nhi`u i`u ki/n 3 chOn thWc hi/n th 5ong cPu 7/nh if sH rht ri r_& .; 5;i
5ngv *2c ng>n ng? 7SC trnh chC cao `u cung chC &et 5Bng cPu 7/nh switch 7i/t k9 c2c gi2
tr: .; chb thWc hi/n c2c gi2 tr: thIch hGC. *@ cng cung chC cPu 7/nh nhDV switch cK c$ Ch2C
sauu
switch (biu thc diu kin)
{
case <gi tri>:
<Cc cu lnh thuc hin>
<lnh nhy>
[default:
<Cc cu lnh thuc hin mc dinh>]
}
*ng tFng tW nh cPu 7/nh ifv Li3u th4c 3 so s2nh Gc at sau tJ khKa switchv tuV nhi9n
gi2 tr: so s2nh 7Bi Gc at sau &\i c2c tJ khKa c6s[. Zi2 tr: sau tJ khKa case 7; c2c gi2 tr:
hYng s nguV9n nh z ` cSC trong Chmn trc.
NnTngNgnNgC#
-0
NgnNgLpTrnhC#
N#u &et cPu 7/nh case Gc thIch hGC t4c 7; gi2 tr: sau case LYng .i gi2 tr: ca Li3u th4c
sau switch th c2c cPu 7/nh 7i9n !uan #n cPu 7/nh case n;V sH Gc thWc thi. TuV nhi9n
ChDi cK &et cPu 7/nh nhDV nh breakv goto 3 i`u khi3n nhDV !ua c2c case kh2c. n#u
kh>ng cK c2c 7/nh nhDV n;V th khi K chFng trnh sH thWc hi/n tht cD c2c case th'o sau. ^3
5 hi3u hFn ta sH U'& Ugt .I 56 ).T 5i PV.
89 d: F(y) CU> #Inh swit+h(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
class MinhHoaSwitch
{
static void Main()
{
const int mauDo = 0;
const int mauCam = 1;
const int mauVang = 2;
const int mauLuc = 3;
const int mauLam = 4;
const int mauCham = 5;
const int mauTim = 6;
int chonMau = mauLuc;
switch ( chonMau )
{
case mauDo:
Console.WriteLine( "Ban cho mau do );
break;
case mauCam:
Console.WriteLine( "Ban cho mau cam );
break;
case mauVang:
//Console.WriteLine( "Ban chon mau vang);
case mauLuc:
Console.WriteLine( "Ban chon mau luc);
break;
case mauLam:
Console.WriteLine( "Ban chon mau lam);
goto case mauCham;
case mauCham:
NnTngNgnNgC#
-=
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
Console.WriteLine( "Ban cho mau cham);
goto case mauTim;
case mauTim:
Console.WriteLine( "Ban chon mau tim);
goto case mauLuc;
default:
Console.WriteLine( "Ban khong chon mau nao het);
break;
}
Console.WriteLine( "Xin cam on!);
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Trong .I 56 ).T tr9n 7i/t k9 LDV 7oBi &;u .; 5ong cPu 7/nh switch 3 ki3& tra c2c trng hGC
chOn &;u. PV ch$ng ta thE ChPn tIch tJg cPu 7/nh case &; kh>ng !uan tP& #n gi2 tr:
Li#n chonMau.
Zi2 tr: chonMau *Pu 7/nh case thWc hi/n "#t !uD thWc hi/n
mauDo case mauDo 8an chon &au 5o
mauCam case mauCam 8an chon &au ca&
mauVang case mauVang
case mauLuc
8an chon &au 7uc
mauLuc case mauLuc 8an chon &au 7uc
mauLam case mauLam
case mauCham
case mauTim
case mauLuc
8an chon &au 7a&
8an chon &au cha&
8an chon &au ti&
8an chon &au 7uc
mauCham case mauCham
case mauTim
case mauLuc
8an chon &au cha&
8an chon &au ti&
8an chon &au 7uc
mauTim case mauTim
case mauLuc
8an chon &au ti&
8an chon &au 7uc
4*ng F(F) M t* +,+ tr;Wng hHp thO+ hiIn +U> #Inh swit+h(
Trong oBn .I 56 5o gi2 tr: ca Li#n chonMau mauLuc n9n khi .;o 7/nh switch th case
mauLuc sH Gc thWc hi/n .; k#t !uD nh sauu
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>* N9 d: F(y
NnTngNgnNgC#
-A
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
3an chon #au !uc
4in ca# on5
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
2hi +h3u ^i .i ngi 7SC trnh **v trong *@ ch$ng ta kh>ng th3 nhDV Uung &et
trng hGC case ti#C th'o n#u cPu 7/nh case hi/n tBi kh>ng r\ng. .SV ch$ng ta ChDi .i#t
nh sauu
case 1: // nhy xung
case 2:
Nh &inh hOa tr9n th trng hGC UE 7] case 1 7; r\ngv tuV nhi9n ch$ng ta kh>ng th3 .i#t
nh sauu
case 1:
DoAnything();
// Trng hop ny khng th nhy xung case 2
case 2:
trong oBn chFng trnh th4 hai trng hGC case 1 cK &et cPu 7/nh n9n kh>ng th3 nhDV
Uung Gc. N#u &un trng hGC cas'1 nhDV !ua case 2 th ta ChDi sE 56ng cPu 7/nh goto
&et c2c tng &inhu
case 1:
DoAnything();
goto case 2;
case 2:
po .SV khi thWc hi/n Uong c2c cPu 7/nh ca &et trng hGC n#u &un thWc hi/n &et trng
hGC case kh2c th ta 5ong cPu 7/nh nhDV goto .i nhzn ca trng hGC Ku
goto case <gi tri>
"hi gaC 7/nh tho2t break th chFng trnh tho2t khQi switch .; thWc hi/n 7/nh ti#C sau khi
switch K.
N#u kh>ng cK trng hGC n;o thIch hGC .; trong cPu 7/nh switch cK 5ong cPu 7/nh defalut
th c2c cPu 7/nh ca trng hGC default sH Gc thWc hi/n. Ta cK th3 5ong default 3 cDnh
L2o &et 7\i haV UE 7] &et trng hGC ngo;i tht cD c2c trng hGC case trong switch.
Trong .I 56 &inh hOa cPu 7/nh switch trc th gi2 tr: 3 ki3& tra c2c trng hGC thIch hGC
7; c2c hYng s nguV9n. TuV nhi9n *@ cn cK khD nqng cho ChgC ch$ng ta 5ong cPu 7/nh
switch .i gi2 tr: 7; &et chu\iv cK th3 .i#t nh sauu
switch (chuoi1)
{
case "mau do:
....
break;
case "mau cam:
NnTngNgnNgC#
-T
Chu y lenh case
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
...
break;
...
}
%Pu ,+nh ,_-
*@ cung chC &et Le &f reng c2c cPu 7/nh 7aCv Lao g& c2c cPu 7/nh 7aC forv while .;
do... while. Ngo;i ra ng>n ng? *@ cn L sung th9& &et cPu 7/nh 7aC foreachv 7/nh n;V
&i i .i ngi 7SC trnh ** nhng kh2 thPn thi/n .i ngi 7SC trnh 8. *ui cong 7;
c2c cPu 7/nh nhDV nh gotov break, continuev .; return.
O CU> #Inh nh*y goto
+/nh nhDV goto 7; &et 7/nh nhDV Fn giDnv cho ChgC chFng trnh nhDV .> i`u ki/n ti
&et .: trI trong chFng trnh th>ng !ua t9n nhzn. TuV nhi9n .i/c sE 56ng 7/nh goto thng
7;& &ht i tInh chu tr$c thuSt to2nv .i/c 7B& 56ng sH 5cn #n &et chFng trnh ngun &; gii
7SC trnh gOi 7; sm jn #iDnt ri nh & Lng Long .SV. [mu h#t c2c ngi 7SC trnh cK kinh
nghi/& `u tr2nh 5ong 7/nh goto. Sau PV 7; c2ch sE 56ng 7/nh nhDV gotou
TBo &et nhzn
goto #n nhzn
Nhzn 7; &et :nh 5anh th'o sau Lfi 5hu hai chh& {u}. Thng thng &et 7/nh goto g_n .i
&et i`u ki/n n;o Kv .I 56 ).10 sau sH &inh hOa c2c sE 56ng 7/nh nhDV goto trong chFng
trnh.
89 d: F(1$) Sn d:ng goto(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
public class UsingGoto
{
public static int Main()
{
int i = 0;
lap: // nhn
Console.WriteLine("i:{0},i);
i++;
if ( i < 10 )
goto lap; // nhy v nhn lap
return 0;
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
NnTngNgnNgC#
00
NgnNgLpTrnhC#
?@t A>*)
i:0
i:1
i:)
i:3
i:*
i:5
i:+
i:6
i:7
i:9
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
N#u ch$ng ta .H 7u ca &et chFng trnh cK sE 56ng nhi`u 7/nh gotov th ta sH thhV k#t
!uD rht nhi`u ng chng chgo 79n nhauv ging nh 7; c2c sGi & .SV. *hInh . .SV n9n
nh?ng oBn &z chFng trnh cK 5ong 7/nh goto cn Gc gOi 7; sspagh'tti +od't.
i/c tr2nh 5ong 7/nh nhDV goto trong chFng trnh ho;n to;n thWc hi/n Gcv cK th3 5ong
.ng 7aC while 3 thaV th# ho;n to;n c2c cPu 7/nh goto.
O 8Eng #^p whi#'
nghda ca .ng 7aC while 7;u s0rong 1hi =iD> 1iIn =3ng th thO+ hiIn +,+ +ng NiI+ n-yt.
*$ Ch2C sE 56ng .ng 7aC while nh sauu
while (Biu thc)
<Cu lnh thuc hin>
8i3u th4c ca .ng 7aC while 7; i`u ki/n 3 c2c 7/nh Gc thWc hi/nv Li3u th4c n;V L_t Luec
ChDi trD .` &et gi2 tr: ki3u bool 7; true/false. N#u cK nhi`u cPu 7/nh cmn Gc thWc hi/n trong
.ng 7aC while th ChDi at c2c 7/nh n;V trong khi 7/nh. I 56 ).11 &inh hOa .i/c sE 56ng
.ng 7aC while.
89 d: F(11) Sn d:ng NEng #^p whi#'(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
public class UsingWhile
{
public static int Main()
{
int i = 0;
while ( i < 10 )
{
Console.WriteLine(" i: {0} ,i);
i++;
NnTngNgnNgC#
01
NgnNgLpTrnhC#
}
return 0;
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
i:0
i:1
i:)
i:3
i:*
i:5
i:+
i:6
i:7
i:9
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
^oBn chFng trnh ).11 cng cho k#t !uD tFng tW nh chFng trnh &inh hOa ).10 5ong
7/nh goto. TuV nhi9n chFng trnh ).11 r r;ng hFn .; cK ] nghda tW nhi9n hFn. *K th3 5in
giDi ng>n ng? tW nhi9n oBn .ng 7aC while nh sauu s0rong 1hi i nhV h<n 1$f th in ra gi,
trM +7a i N- tjng i #%n mYt =<n NMt.
+u ] rYng .ng 7aC while sH ki3& tra i`u ki/n trc khi thWc hi/n c2c 7/nh L9n trongv i`u
n;V D& LDo n#u ngaV tJ mu i`u ki/n sai th .ng 7aC sH kh>ng Lao gi thWc hi/n. 5o .SV
n#u khfi tBo Li#n i cK gi2 tr: 7; 11v th .ng 7aC sH kh>ng Gc thWc hi/n.
O 8Eng #^p do(((whi#'
^>i khi .ng 7aC while kh>ng thoD &zn V9u cmu trong tnh hung sauv ch$ng ta &un chuV3n
ng? nghda ca while 7; s+hLy trong 1hi =iD> 1iIn =3ngt th;nh ng? nghda kh2c nh s#-m =iD>
n-y trong 1hi =iD> 1iIn N~n +En =3ngt. NKi c2ch kh2c thWc hi/n &et h;nh engv .; sau khi
h;nh eng Gc ho;n th;nh th ki3& tra i`u ki/n. *$ Ch2C sE 56ng .ng 7aC do...while nh
sauu
do
<Cu lnh thuc hin>
while ( diu kin )
PV cK sW kh2c Li/t !uan trOng gi?a .ng 7aC while .; .ng 7aC do...while 7; khi 5ong
.ng 7aC do...while th ti thi3u sH cK &et 7mn c2c cPu 7/nh trong do...while Gc thWc hi/n.
^i`u n;V cng 5 hi3u . 7mn mu ti9n i .;o .ng 7aC do...while th i`u ki/n cha Gc
ki3& tra.
89 d: F(12) Minh hoL NiI+ sn d:ng NEng #^p do((whi#'(
NnTngNgnNgC#
02
NgnNgLpTrnhC#
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
public class UsingDoWhile
{
public static int Main( )
{
int i = 11;
do
{
Console.WriteLine("i: {0},i);
i++;
} while ( i < 10 )
return 0;
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*u
i: 11
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
po khfi tBo Li#n i gi2 tr: 7; 11v n9n i`u ki/n ca while 7; saiv tuV nhi9n .ng 7aC do...while
.cn Gc thWc hi/n &et 7mn.
O 8Eng #^p Tor
ng 7aC for Lao g& La Chmn chInhu
"hfi tBo Li#n #& .ng 7aC
"i3& tra i`u ki/n Li#n #&v n#u $ng th sH thWc hi/n c2c 7/nh L9n trong .ng for
ThaV i Lc 7aC.
*$ Ch2C sE 56ng .ng 7aC for nh sauu
for ([ phn khi tao] ; [biu thc diu kin]; [bc lp])
<Cu lnh thuc hin>
ng 7aC for Gc &inh hOa trong .I 56 sauu
89 d: F(1F) Sn d:ng NEng #^p Tor(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
public class UsingFor
{
public static int Main()
{
for (int i = 0; i < 30; i++)
NnTngNgnNgC#
0)
NgnNgLpTrnhC#
{
if (i %10 ==0)
{
Console.WriteLine("{0} ,i);
}
else
{
Console.Write("{0} ,i);
}
}
return 0;
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*u
0
1 ) 3 * 5 + 6 7 9 10
11 1) 13 1* 15 1+ 16 17 19 )0
)1 )) )3 )* )5 )+ )6 )7 )9
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Trong oBn chFng trnh tr9n cK sE 56ng to2n tE chia 7hV 5 modulov to2n tE n;V sH Gc `
cSC #n Chmn sau. nghda 7/nh i%10 == 0 7; ki3& tra U'& i cK ChDi 7; Lei s ca 10 kh>ngv
n#u i 7; Lei s ca 10 th sE 56ng 7/nh WriteLine 3 Uuht gi2 tr: i .; sau K a cursor .` mu
5ng sau. *n ngGc 7Bi chb cmn Uuht gi2 tr: ca i .; kh>ng Uung 5ng.
^mu ti9n Li#n i Gc khfi tBo gi2 tr: Lan mu 7; 0v sau K chFng trnh sH ki3& tra i`u ki/nv
5o 0 nhQ hFn )0 n9n i`u ki/n $ngv khi K c2c cPu 7/nh L9n trong .ng 7aC for sH Gc thWc
hi/n. Sau khi thWc hi/n Uong th Li#n i sH Gc tqng th9& &et Fn .: {i++}.
*K &et i`u 7u ] 7; Li#n i 5o khai Lao L9n trong .ng 7aC for n9n chb cK ChB& .i hoBt eng
L9n trong .ng 7aC. I 56 ).1N sau sH kh>ng Gc Li9n 5:ch . Uuht hi/n &et 7\i.
89 d: F(1G) PhLm Ni +7a i@n 1hai ,o trong NEng #^p(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
public class UsingFor
{
public static int Main()
{
for (int i = 0; i < 30; i++)
{
NnTngNgnNgC#
0N
NgnNgLpTrnhC#
if (i %10 ==0)
{
Console.WriteLine("{0} ,i);
}
else
{
Console.Write("{0} ,i);
}
}
// Lnh sau sai do bin i ch doc khai bo bn trong vng lp
Console.WriteLine(" Ket qua cuoi cung cua i:{0},i);
return 0;
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
O CU> #Inh #^p Tor'a+h
ng 7aC foreach cho ChgC tBo .ng 7aC th>ng !ua &et tSC hGC haV &et &Dng. ^PV
7; &et cPu 7/nh 7aC &i kh>ng cK trong ng>n ng? **. *Pu 7/nh foreach cK c$ Ch2C
chung nh sauu
foreach ( <kiu tp hop> <tn truy cp thnh phn > in < tn tp hop>)
<Cc cu lnh thuc hin>
po 7aC 5Wa tr9n &et &Dng haV tSC hGC n9n to;n Le .ng 7aC sH 5uV/t !ua tht cD c2c th;nh
Chmn ca tSC hGC th'o th4 tW Gc s_C. "hi 5uV/t #n Chmn tE cui cong trong tSC hGC th
chFng trnh sH tho2t ra khQi .ng 7aC foreach.
89 d: F(1Q minh hBa NiI+ sn d:ng NEng #^p Tor'a+h(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
public class UsingForeach
{
public static int Main()
{
int[] intArray = {1,2,3,4,5,6,,8,9,10};
foreach( int item in intArray)
{
Console.Write("{0} , item);
}
return 0;
}
NnTngNgnNgC#
0-
NgnNgLpTrnhC#
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*u
1 ) 3 * 5 + 6 7 9 10
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
O CU> #Inh nh*y break N- continue
"hi ang thWc hi/n c2c 7/nh trong .ng 7aCv cK V9u cmu nh sauu kh>ng thWc hi/n c2c
7/nh cn 7Bi n?a &; tho2t khQi .ng 7aCv haV kh>ng thWc hi/n c2c c>ng .i/c cn 7Bi ca .ng
7aC hi/n tBi &; nhDV !ua .ng 7aC ti#C th'o. ^3 2C 4ng V9u cmu tr9n *@ cung chC hai 7/nh
nhDV 7; break .; continue 3 tho2t khQi .ng 7aC.
Break khi Gc sE 56ng sH a chFng trnh tho2t khQi .ng 7aC .; ti#C t6c thWc hi/n c2c
7/nh ti#C ngaV sau .ng 7aC.
Continue ngJng thWc hi/n c2c c>ng .i/c cn 7Bi ca .ng 7aC hi/n thi .; !uaV .` mu .ng
7aC 3 thWc hi/n Lc 7aC ti#C th'o
[ai 7/nh break .; continue tBo ra nhi`u i3& tho2t .; 7;& cho chFng trnh khK hi3u cng
nh 7; khK 5uV tr. po .SV ChDi cMn trOng khi sE 56ng c2c 7/nh nhDV n;V.
I 56 ).10 sH Gc trnh L;V L9n 5i &inh hOa c2ch sE 56ng 7/nh continue .; break.
^oBn chFng trnh &> ChQng h/ thng UE 7] tIn hi/u giao th>ng Fn giDn. TIn hi/u &> ChQng
7; c2c k] tW ch? hoa haV s Gc nhSC .;o tJ L;n ChI&v sE 56ng h;& ReadLine ca 7C
Console 3 Oc &et chu\i k] tW tJ L;n ChI&.
ThuSt to2n ca chFng trnh kh2 Fn giDnu "hi nhSn tIn hi/u 0x cK nghda 7; &Oi .i/c Lnh
thngv kh>ng cmn ChDi 7;& Lht c4 c>ng .i/c g cDv k3 cD .i/c ghi 7Bi c2c sW ki/n. Trong
chFng trnh n;V Fn giDn n9n c2c tIn hi/u Gc nhSC tJ L;n ChI&v cn trong 4ng 56ng thSt
th tIn hi/u n;V sH Gc Ch2t sinh th'o c2c &cu tin thi gian trong cF sf 5? 7i/u. "hi nhSn
Gc tIn hi/u tho2t {&> ChQng Lfi k] tW Tx} th ghi 7Bi tnh trBng .; k#t th$c UE 7]. *ui
congv Lht c4 tIn hi/u n;o kh2c sH Ch2t ra &et th>ng L2ov cK th3 7; th>ng L2o #n nhPn .i9n
cDnh s2t chng hBn...Trng hGC tIn hi/u 7; Xx th cng sH Ch2t ra &et th>ng L2o nhng sau
.ng 7aC UE 7] cng k#t th$c.
89 d: F(1v) Sn d:ng break N- continue.
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
public class TrafficSignal
{
public static int Main()
{
string signal = "0; // Khi tao tn hiu
// bt du chu trnh x l tn hiu
while ( signal != "X)
NnTngNgnNgC#
00
NgnNgLpTrnhC#
{
//nhp tn hiu
Console.Write("Nhap vao mot tin hieu: );
signal = Console.ReadLine();
// xut tn hiu hin thi
Console.WriteLine("Tin hieu nhan duoc: {0}, signal);
// phn x l tn hiu
if (signal == "T)
{
// Tn hiu thot doc gi
// lu lai su kin v thot
Console.WriteLine("Ngung xu ly! Thoat\n);
break;
}
if ( signal == "0)
{
// Tn hiu nhn doc bnh thng
// Lu lai su kin v tip tc
Console.WriteLine("Tat ca dieu tot!\n);
continue;
}
// Thuc hin mt s hnh dng no d
// v tip tc
Console.WriteLine("---bip bip bip\n);
}
return 0;
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*u sa> 1hi nhp t>.n tO +,+ t9n hiI> ) $f 4f 0
Nha& $ao #ot tin hieu: 0
in hieu nhan duoc: 0
at ca dieu tot5
Nha& $ao #ot tin hieu: 3
in hieu nhan duoc: 3
---bi& bi& bi&
NnTngNgnNgC#
0=
NgnNgLpTrnhC#
Nha& $ao #ot tin hieu:
in hieu nhan duoc:
Ngung (u !'5 hoat
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
^i3& chInh V#u ca oBn chFng trnh tr9n 7; khi nhSC .;o tIn hi/u sTt th sau khi thWc hi/n
&et s h;nh eng cmn thi#t chFng trnh sH tho2t ra khQi .ng 7aC .; kh>ng Uuht ra cPu th>ng
L2o LiC LiC LiC. NgGc 7Bi khi nhSn Gc tIn hi/u 0 th sau khi Uuht th>ng L2o chFng trnh sH
!uaV .` mu .ng 7aC 3 thWc hi/n ti#C t6c .; cng kh>ng Uuht ra cPu th>ng L2o LiC LiC LiC.
To/n t>
To2n tE Gc kI hi/u LYng &et Li3u tGng 5ong 3 thWc hi/n &et h;nh eng. *2c ki3u
5? 7i/u cF LDn ca *@ nh ki3u nguV9n h\ trG rht nhi`u c2c to2n tE nh to2n tE g2nv to2n tE
to2n hOcv 7ogic....
To/n t> g/n
^#n 7$c n;V to2n tE g2n kh2 !u'n thuec .i ch$ng tav hmu h#t c2c chFng trnh &inh
hOa tJ mu s2ch `u z sE 56ng ChgC g2n. To2n tE g2n haV ChgC g2n 7;& cho to2n hBng L9n
tr2i thaV i gi2 tr: LYng .i gi2 tr: ca to2n hBng L9n ChDi. To2n tE g2n 7; to2n tE hai ng>i.
^PV 7; to2n tE Fn giDn nhht th>ng 56ng nhht .; cng 5 sE 56ng nhht.
To/n t> to/n hQc
Ng>n ng? *@ cung chC nq& to2n tE to2n hOcv Lao g& Ln to2n tE mu c2c ChgC to2n
cF LDn. To2n tE cui cong 7; to2n tE chia nguV9n 7hV Chmn 5. *h$ng ta sH t& hi3u chi ti#t
c2c ChgC to2n n;V trong Chmn ti#C sau.
O C,+ phqp to,n sc hB+ +< *n \{fSfhfz]
*2c ChgC to2n n;V kh>ng th3 thi#u trong Lht c4 ng>n ng? 7SC trnh n;ov *@ cng
kh>ng ngoBi 7/v c2c ChgC to2n s hOc Fn giDn nhng rht cmn thi#t Lao g&u ChgC ceng {}v
ChgC trJ {i}v ChgC nhPn {}v ChgC chia {} nguV9n .; kh>ng nguV9n.
"hi chia hai s nguV9nv th *@ sH LQ Chmn ChPn sv haV LQ Chmn 5v t4c 7; n#u ta chia A) th
sH Gc k#t !uD 7; 2 .; sH LQ Chmn 5 7; 2v 5o .SV 3 7hV Gc Chmn 5 n;V th *@ cung chC
th9& to2n tE 7hV 5 sH Gc trnh L;V trong Chmn k# ti#C.
TuV nhi9nv khi chia cho s thWc cK ki3u nh floatv doublev haV decimal th k#t !uD chia Gc
trD .` 7; &et s thWc.
O Phqp to,n +hia #Xy d;
^3 t& Chmn 5 ca ChgC chia nguV9nv ch$ng ta sE 56ng to2n tE chia 7hV 5 {}. I
56v cPu 7/nh sau 8%3 th k#t !uD trD .` 7; 2 {PV 7; Chmn 5 cn 7Bi ca ChgC chia nguV9n}.
ThSt sW ChgC to2n chia 7hV 5 rht h?u 56ng cho ngi 7SC trnh . "hi ch$ng ta thWc hi/n &et
ChgC chia 5 n cho &et s kh2cv n#u s n;V 7; Lei s ca n th k#t !uD ca ChgC chia 5 7; 0.
I 56 20 % 5 = 0 . 20 7; &et Lei s ca -. ^i`u n;V cho ChgC ch$ng ta 4ng 56ng trong
NnTngNgnNgC#
0A
NgnNgLpTrnhC#
.ng 7aCv khi &un thWc hi/n &et c>ng .i/c n;o K c2ch khoDng n 7mnv ta chb cmn ki3& tra
ChgC chia 5 nv n#u k#t !uD LYng 0 th thWc hi/n c>ng .i/c. *2ch sE 56ng n;V z 2C 56ng
trong .I 56 &inh hOa sE 56ng .ng 7aC for L9n tr9n. I 56 ).1= sau &inh hOa sE 56ng c2c
ChgC to2n chia tr9n c2c s nguV9nv thWc...
89 d: F(1w) Phqp +hia N- phqp +hia #Xy d;(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
class Tester
{
public static void Main()
{
int i1, i2;
float f1, f2;
double d1, d2;
decimal dec1, dec2;
i1 = 1;
i2 = 4;
f1 = 1f;
f2 = 4f;
d1 = 1;
d2 = 4;
dec1 = 1;
dec2 = 4;
Console.WriteLine("Integer: \t{0}, i1/i2);
Console.WriteLine("Float: \t{0}, f1/f2);
Console.WriteLine("Double: \t{0}, d1/d2);
Console.WriteLine("Decimal: \t{0}, dec1/dec2);
Console.WriteLine("\nModulus: : \t{0}, i1%i2);
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*u
8nteger: *
"!oat: *.)5
doub!e: *.)5
deci#a!: *.)5
NnTngNgnNgC#
0T
NgnNgLpTrnhC#
Modu!us: 1
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
To/n t> t`ng *7 gi="
"hi sE 56ng c2c Li#n s ta thng cK thao t2c 7; ceng &et gi2 tr: .;o Li#nv trJ i &et
gi2 tr: tJ Li#n Kv haV thWc hi/n c2c tInh to2n thaV i gi2 tr: ca Li#n sau K g2n gi2 tr: &i
.Ja tInh to2n cho chInh Li#n K.
O 09nh to,n N- g,n trg #Li
ZiD sE ch$ng ta cK &et Li#n t9n Luong 7u gi2 tr: 7Fng ca &et ngiv Li#n Luong
n;V cK gi2 tr: hi/n thi 7; 1.-00.000v sau K 3 tqng th9& 200.000 ta cK th3 .i#t nh sauu
Luong = Luong + 200.000;
Trong cPu 7/nh tr9n ChgC ceng Gc thWc hi/n trcv khi K k#t !uD ca .# ChDi 7; 1.=00.000
.; k#t !uD n;V sH Gc g2n 7Bi cho Li#n Luongv cui cong Luong cK gi2 tr: 7; 1.=00.000.
*h$ng ta cK th3 thWc hi/n .i/c thaV i gi2 tr: ri g2n 7Bi cho Li#n .i Lht k ChgC to2n s hOc
n;ou
Luong = Luong * 2;
Luong = Luong 100.000;
...
po .i/c tqng haV giD& gi2 tr: ca &et Li#n rht thng UDV ra trong khi tInh to2n n9n *@ cung
chC c2c ChgC to2n tW g2n {s'7fi assign&'nt}. 8Dng sau 7i/t k9 c2c ChgC to2n tW g2n.
To<n t= t ng4u6
+= *eng th9& gi2 tr: to2n hBng L9n ChDi
.;o gi2 tr: to2n hBng L9n tr2i
-= To2n hBng L9n tr2i Gc trJ Lt i &et
7Gng LYng gi2 tr: ca to2n hBng L9n
ChDi
*= To2n hBng L9n tr2i Gc nhPn .i &et
7Gng LYng gi2 tr: ca to2n hBng L9n
ChDi.
/= To2n hBng L9n tr2i Gc chia .i &et
7Gng LYng gi2 tr: ca to2n hBng L9n
ChDi.
%= To2n hBng L9n tr2i Gc chia 7hV 5 .i
&et 7Gng LYng gi2 tr: ca to2n hBng
L9n ChDi.
4*ng F(G) M t* +,+ phqp to,n tO g,n(
pWa tr9n c2c ChgC to2n tW g2n trong LDng ta cK th3 thaV th# c2c 7/nh tqng giD& 7Fng nh sauu
NnTngNgnNgC#
=0
NgnNgLpTrnhC#
Luong += 200.000;
Luong *= 2;
Luong -= 100.000;
"#t !uD ca 7/nh th4 nhht 7; gi2 tr: ca Luong sH tqng th9& 200.000v 7/nh th4 hai sH 7;& cho
gi2 tr: Luong nhPn >i t4c 7; tqng ghC 2 7mnv .; 7/nh cui cong sH trJ Lt 100.000 ca Luong.
po .i/c tqng haV giD& 1 rht Ch Li#n trong 7SC trnh n9n *@ cung chC hai to2n tE ac Li/t 7;
tqng &et {} haV giD& &et {ii}.
"hi K &un tqng i &et gi2 tr: ca Li#n #& trong .ng 7aC ta cK th3 .i#t nh sauu
bienDem++;
O 0o,n tn tjng gi*m tiDn tc N- tjng gi*m h> tc
ZiD sE &un k#t hGC c2c ChgC to2n nh gia tqng gi2 tr: ca &et Li#n .; g2n gi2 tr: ca
Li#n cho Li#n th4 haiv ta .i#t nh sauu
var1 = var2++;
*Pu hQi Gc at ra 7; g2n gi2 tr: trc khi ceng haV g2n gi2 tr: sau khi z ceng. [aV nKi c2ch
kh2c gi2 tr: Lan mu ca Li#n var2 7; 10v sau khi thWc hi/n ta &un gi2 tr: ca var1 7; 10v
var2 7; 11v haV var1 7; 11v var2 cng 11
^3 giDi !uV#t V9u cmu tr9n *@ cung chC th4 tW thWc hi/n ChgC to2n tqnggiD& .i ChgC to2n
g2nv th4 tW n;V Gc gOi 7; tiDn tc {Cr'fiU} haV h> tc {CostfiU}. po K ta cK th3 .i#tu
var1 = var2++; // Hu t
"hi 7/nh n;V Gc thWc hi/n th ChgC g2n sH Gc thWc hi/n trc ti9nv sau K &i #n ChgC
to2n tqng. "#t !uD 7; var1 10 .; var2 11. *n i .i trng hGC ti`n tu
var1 = ++var2;
"hi K ChgC tqng sH Gc thWc hi/n trc t4c 7; gi2 tr: ca Li#n var2 sH 7; 11 .; cui cong
ChgC g2n Gc thWc hi/n. "#t !uD cD hai Li#n var1 .; var2 i`u cK gi2 tr: 7; 11.
^3 hi3u r hFn .` hai ChgC to2n n;V ch$ng ta sH U'& .I 56 &inh hOa ).1A sau
89 d: F(1x) Minh hoL sn d:ng to,n tn tjng tr;o+ N- tjng sa> 1hi g,n(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
class Tester
{
static int Main()
{
int valueOne = 10;
int valueTwo;
valueTwo = valueOne++;
Console.WriteLine("Thuc hien tang sau: {0}, {1},
valueOne, valueTwo);
valueOne = 20;
NnTngNgnNgC#
=1
NgnNgLpTrnhC#
valueTwo = ++valueOne;
Console.WriteLine("Thuc hien tang truoc: {0}, {1},
valueOne, valueTwo);
return 0;
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*u
huc hien tang sau: 11% 10
huc hien tang truoc: )1% )1
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
To/n t> quan h+
Nh?ng to2n tE !uan h/ Gc 5ong 3 so s2nh gi?a hai gi2 tr:v .; sau K trD .` k#t !uD
7; &et gi2 tr: 7ogic ki3u bool {true haV false}. I 56 to2n tE so s2nh 7n hFn {} trD .` gi2 tr:
7; true n#u gi2 tr: L9n tr2i ca to2n tE 7n hFn gi2 tr: L9n ChDi ca to2n tE. po .SV 5 > 2 trD
.` &et gi2 tr: 7; truev trong khi 2 > 5 trD .` gi2 tr: false.
*2c to2n tE !uan h/ trong ng>n ng? *@ Gc trnh L;V f LDng ).N L9n 5i. *2c to2n tE trong
LDng Gc &inh hOa .i hai Li#n 7; value1 .; value2v trong K value1 cK gi2 tr: 7; 100 .;
value2 cK gi2 tr: 7; -0.
Tbn to<n t= 2e 4iC@ ai_@ t4`c so s<n4 23t P@" so s<n4
So s2nh LYng == value1 == 100
value1 == 50
true
false
"h>ng LYng != value2 != 100
value2 != 90
false
true
+n hFn > value1 > value2
value2 > value1
true
false
+n hFn haV LYng >= value2 >= 50 true
NhQ hFn < value1 < value2
value2 < value1
false
true
NhQ hFn haV LYng <= value1 <= value2 false
4*ng F(G) C,+ to,n tn so s,nh \gi* sn Na#>'1 1$$f N- Na#>'2 Q$](
Nh trong LDng ).N tr9n ta 7u ] to2n tE so s2nh LYng {==}v to2n tE n;V Gc k] hi/u Lfi hai
5hu LYng {=} 7i`n nhau .; cong tr9n &et h;ng v kh>ng cK Lht k khoDng trng n;o Uuht hi/n
gi?a ch$ng. Trnh Li9n 5:ch *@ U'& hai 5hu n;V nh &et to2n tE.
To/n t> ,ogic
NnTngNgnNgC#
=2
NgnNgLpTrnhC#
Trong cPu 7/nh if &; ch$ng ta z t& hi3u trong Chmn trcv th khi i`u ki/n 7; true
th Li3u th4c L9n trong if &i Gc thWc hi/n. ^>i khi ch$ng ta &un k#t hGC nhi`u i`u ki/n
.i nhau nhu L_t Luec cD hai haV nhi`u i`u ki/n ChDi $ng hoac chb cmn &et trong c2c i`u
ki/n $ng 7; hoac kh>ng cK i`u ki/n n;o $ng...*@ cung chC &et tSC hGC c2c to2n tE
7ogic 3 Ch6c .6 cho ngi 7SC trnh.
8Dng ).- 7i/t k/ La ChgC to2n 7ogicv LDng n;V cng sE 56ng hai Li#n &inh hOa 7; xv .; y trong
K x cK gi2 tr: 7; - .; y cK gi2 tr: 7; =.
Tbn to<n t= 2L 4iC@ ai_@ t4`c )ogic Gi< trc Logic
and (x == 3) (y ==
)
false *D hai i`u ki/n
ChDi $ng
or (x == 3) (y == ) true *hb cmn &et i`u
ki/n $ng
not ! ! (x == 3 ) true 8i3u th4c trong
ngoac ChDi sai.
4*ng F(Q) C,+ to,n tn #ogi+ \gi* sn x = 5, y = 7](
To2n tE and sH ki3& tra cD hai i`u ki/n. Trong LDng ).- tr9n cK &inh hOa Li3u th4c 7ogic sE
56ng to2n tE andu
(x == 3) (y == )
To;n Le Li3u th4c Gc U2c :nh 7; sai . cK i`u ki/n {x == 3} 7; sai.
i to2n tE orv th &et haV cD hai i`u ki/n $ng th $ngv Li3u th4c sH cK gi2 tr: 7; sai khi cD
hai i`u ki/n sai. po .SV ta U'& Li3u th4c &inh hOa to2n tE oru
(x == 3) (y == )
8i3u th4c n;V Gc U2c :nh gi2 tr: 7; $ng 5o cK &et i`u ki/n $ng 7; {y == } 7; $ng.
^i .i to2n tE notv Li3u th4c sH cK gi2 tr: $ng khi i`u ki/n trong ngoac 7; saiv .; ngGc 7Biv
5o K Li3u th4cu
!( x == 3)
cK gi2 tr: 7; $ng . i`u ki/n trong ngoac t4c 7; {x == 3} 7; sai.
Nh ch$ng ta z Li#t i .i ChgC to2n 7ogic and th chb cmn &et i`u ki/n trong Li3u th4c sai
7; to;n Le Li3u th4c 7; saiv 5o .SV thSt 7; 5 thJa khi ki3& tra c2c i`u ki/n cn 7Bi &et khi cK
&et i`u ki/n z sai. ZiD sE ta cK oBn chFng trnh sauu
int x = 8;
if ((x == 5) (y == 10))
"hi K Li3u th4c if sH $ng khi cD hai Li3u th4c con 7; {x == 5} .; {y == 10} $ng. TuV
nhi9n khi Ugt Li3u th4c th4 nhht 5o gi2 tr: x 7; A n9n Li3u th4c {x == 5} 7; sai. "hi K kh>ng
cmn thi#t 3 U2c :nh gi2 tr: ca Li3u th4c cn 7Biv t4c 7; .i Lht k gi2 tr: n;o ca Li3u th4c {y
== 10} th to;n Le Li3u th4c i`u ki/n if .cn sai.
NnTngNgnNgC#
=)
NgnNgLpTrnhC#
TFng tW .i Li3u th4c 7ogic orv khi U2c :nh Gc &et Li3u th4c con $ng th kh>ng cmn
ChDi U2c :nh c2c Li3u th4c con cn 7Biv . to2n tE 7ogic or chb cmn &et i`u ki/n $ng 7; u
int x =8;
if ( (x == 8) (y == 10))
"hi ki3& tra Li3u th4c {x == 8} cK gi2 tr: 7; $ngv th kh>ng cmn ChDi U2c :nh gi2 tr: ca
Li3u th4c {y == 10} n?a.
Ng>n ng? 7SC trnh *@ sE 56ng 7ogic nh ch$ng ta z thDo 7uSn L9n tr9n 3 7oBi LQ c2c tInh
to2n so s2nh 5 thJa .; cng kh>ng 7ogic n?a
]H u ti5n to/n t>
Trnh Li9n 5:ch ChDi U2c :nh th4 tW thWc hi/n c2c to2n tE trong trng hGC &et Li3u
th4c cK nhi`u ChgC to2nv giD sEv cK Li3u th4c sauu
var1 = 5+*3;
8i3u th4c tr9n cK La ChgC to2n 3 thWc hi/n Lao g& {v v}. Ta thE Ugt c2c ChgC to2n th'o
th4 tW tJ tr2i sang ChDiv mu ti9n 7; g2n gi2 tr: 5 cho Li#n var1v sau K ceng .;o 5 7; 12 cui
cong 7; nhPn .i 3v k#t !uD trD .` 7; 36v i`u n;V thSt sW cK .hn `v kh>ng $ng .i &6c Ich
V9u cmu ca ch$ng ta. po .SV .i/c UPV 5Wng &et trnh tW UE 7] c2c to2n tE 7; h#t s4c cmn thi#t.
*2c 7uSt .` e u ti9n UE 7] sH LDo trnh Li9n 5:ch Li#t Gc to2n tE n;o Gc thWc hi/n trc
trong Li3u th4c.TFng tW nh trong ChgC to2n Bi s th ChgC nhPn cK e u ti9n thWc hi/n
trc ChgC to2n cengv 5o .SV 5+*3 cho k#t !uD 7; 26 $ng hFn k#t !uD 36. ; cD hai ChgC
to2n ceng .; ChgC to2n nhPn i`u cK e u ti9n cao hFn ChgC g2n. Nh .SV trnh Li9n 5:ch sH
thWc hi/n c2c ChgC to2n ri sau K thWc hi/n ChgC g2n f Lc cui cong. "#t !uD $ng ca
cPu 7/nh tr9n 7; Li#n var1 sH nhSn gi2 tr: 7; 26.
Trong ng>n ng? *@v 5hu ngoac Gc sE 56ng 3 thaV i th4 tW UE 7]v i`u n;V cng ging
trong tInh to2n Bi s. "hi K &un k#t !uD 36 cho Li#n var1 cK th3 .i#tu
var1 = (5+) * 3;
8i3u th4c trong ngoac sH Gc UE 7] trc .; sau khi cK k#t !uD 7; 12 th ChgC nhPn Gc
thWc hi/n.
8Dng ).0u +i/t k9 th4 tW e u ti9n c2c ChgC to2n trong *@.
VTT Lo:i to<n t= To<n t= T4` t(
1 1hgC to2n cF LDn (x) x.y f(x) a[x] x++ xnew typeof
sizeof checked unchecked
Tr2i
2 + - ! ++x x (T)x Tr2i
) 1hgC nhPn * / % Tr2i
N 1hgC ceng + - Tr2i
- p:ch bit << >> Tr2i
0 uan h/ < > <= >= is Tr2i
NnTngNgnNgC#
=N
NgnNgLpTrnhC#
= So s2nh LYng == != 1hDi
A 1hgC to2n 7ogic
yNp
Tr2i
T 1hgC to2n 7ogic
j,
Tr2i
10 1hgC to2n 7ogic j, Tr2i
11 ^i`u ki/n yNp Tr2i
12 ^i`u ki/n j, Tr2i
1) ^i`u ki/n ?: 1hDi
1N 1hgC g2n = *= /= %= += -= <<= >>= =
= =
1hDi
4*ng F(v) 0hP tO ;> ti%n +,+ to,n tn(
*2c ChgC to2n Gc 7i/t k9 cong 7oBi sH cK th4 tW th'o &6c th4 thW ca LDngu th4 tW tr2i t4c 7;
e u ti9n ca c2c ChgC to2n tJ L9n tr2i sangv th4 tW ChDi th c2c ChgC to2n cK e u ti9n tJ
L9n ChDi !ua tr2i. *2c to2n tE kh2c 7oBi th cK e u ti9n tJ tr9n Uung 5iv 5o .SV c2c to2n
tE 7oBi cF LDn sH cK e u ti9n cao nhht .; ChgC to2n g2n sH cK e u ti9n thhC nhht trong c2c
to2n tE.
To/n t> Ia ng9i
[mu h#t c2c to2n tE i hQi cK &et to2n hBng nh to2n tE {v ii} haV hai to2n hBng
nh {vivvv...}. TuV nhi9nv *@ cn cung chC th9& &et to2n tE cK La to2n hBng {u}. To2n tE
n;V cK c$ Ch2C sE 56ng nh sauu
<Biu thc diu kin > ? <Biu thc th 1> : <Biu thc th 2>
To2n tE n;V sH U2c :nh gi2 tr: ca &et Li3u th4c i`u ki/nv .; Li3u th4c i`u ki/n n;V ChDi
trD .` &et gi2 tr: ki3u bool. "hi i`u ki/n $ng th biu thc th 1 sH Gc thWc hi/nv cn
ngGc 7Bi i`u ki/n sai th biu thc th 2 sH Gc thWc hi/n. *K th3 5in giDi th'o ng>n
ng? tW nhi9n th to2n tE n;V cK ] nghda u sN@> =iD> 1iIn =3ng th #-m +ng NiI+ thP nhXtf +En
ng;H+ #Li =iD> 1iIn sai th #-m +ng NiI+ thP hait. *2ch sE 56ng to2n tE La ng>i n;V Gc
&inh hOa trong .I 56 ).1T sau.
89 d: F(1y) Sn d:ng to,n tn ao ngi(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
class Tester
{
public static int Main()
{
int value1;
NnTngNgnNgC#
=-
NgnNgLpTrnhC#
int value2;
int maxValue;
value1 = 10;
value2 = 20;
maxValue = value1 > value2 ? value1 : value2;
Console.WriteLine("Gia tri thu nhat {0}, gia tri thu hai {1},
gia tri lon nhat {2}, value1, value2, maxValue);
return 0;
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*u
1ia tri thu nhat 10% gia tri thu hai )0% gia tri !on nhat )0
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Trong .I 56 &inh hOa tr9n to2n tE La ng>i Gc sE 56ng 3 ki3& tra U'& gi2 tr: ca value1
cK 7n hFn gi2 tr: ca value2v n#u $ng th trD .` gi2 tr: ca value1v t4c 7; g2n gi2 tr: value1
cho Li#n maxValuev cn ngGc 7Bi th g2n gi2 tr: value2 cho Li#n maxValue.
Na"#s-ac#
*hFng 2 z thDo 7uSn .i/c sE 56ng ac tInh nam'spa+' trong ng>n ng? *@v nhY&
tr2nh sW Uung et gi?a .i/c sE 56ng c2c th .i/n kh2c nhau tJ c2c nh; cung chC. Ngo;i rav
na&'sCac' Gc U'& nh 7; tSC hGC c2c 7C i tGngv .; cung chC 5uV nhht c2c :nh 5anh
cho c2c ki3u 5? 7i/u .; Gc at trong &et chu tr$c ChPn chC. i/c sE 56ng na&'sCac' trong
khi 7SC trnh 7; &et thKi !u'n ttv Lfi . c>ng .i/c n;V chInh 7; c2ch 7u c2c &z ngun 3 sE
56ng .` sau. Ngo;i th .i/n na&'sCac' 5o MS.NET .; c2c hzng th4 La cung chCv ta cK th3
tBo ri9ng cho &nh c2c na&'sCac'. *@ a ra tJ khKa using ` khai L2o sE 56ng na&'sCac'
trong chFng trnhu
using < Tn namespace >
^3 tBo &et na&'sCac' 5ong c$ Ch2C sauu
namespace <Tn namespace>
{
< inh ngha lp A>
< inh ngha lp B >
.....
}
^oBn .I 56 ).20 &inh hOa .i/c tBo &et na&'sCac'.
89 d: F(2$) 0Lo mYt nam'spa+'(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
NnTngNgnNgC#
=0
NgnNgLpTrnhC#
namespace MyLib
{
using System;
public class Tester
{
public static int Main()
{
for (int i =0; i < 10; i++)
{
Console.WriteLine( "i: {0}, i);
}
return 0;
}
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
I 56 tr9n tBo ra &et na&'sCac' cK t9n 7; MyLibv L9n trong na&'sCac' n;V ch4a &et 7C cK
t9n 7; Tester. *@ cho ChgC trong &et na&'sCac' cK th3 tBo &et na&'sCac' kh2c 7ng L9n
trong .; kh>ng gii hBn &4c e ChPn chC n;Vv .i/c ChPn chC n;V Gc &inh hOa trong .I 56
).21.
89 d: F(21) 0Lo +,+ nam'spa+' #Kng nha>.
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
namespace MyLib
{
namespace Demo
{
using System;
public class Tester
{
public static int Main()
{
for (int i =0; i < 10; i++)
{
Console.WriteLine( "i: {0}, i);
}
return 0;
}
}
NnTngNgnNgC#
==
NgnNgLpTrnhC#
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
+C Tester trong .I 56 ).21 Gc at trong na&'sCac' Demo 5o K cK th3 tBo &et 7C Tester
kh2c L9n ngo;i na&'sCac' Demo haV L9n ngo;i na&'sCac' MyLib &; kh>ng cK Lht c4 sW
tranh chC haV Uung et n;o. ^3 truV cSC 7C Tester 5ong c$ Ch2C sauu
MyLib.Demo.Tester
Trong &et na&'sCac' &et 7C cK th3 gOi &et 7C kh2c thuec c2c chC na&'sCac' kh2c nhauv
.I 56 ti#C sau &inh hOa .i/c gOi &et h;& thuec &et 7C trong na&'sCac' kh2c.
89 d: F(22) 2Bi mYt nam'spa+' th-nh Ni%n(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
namespace MyLib
{
namespace Demo1
{
class Example1
{
public static void Show1()
{
Console.WriteLine("Lop Example1);
}
}
}
namespace Demo2
{
public class Tester
{
public static int Main()
{
Demo1.Example1.Show1();
Demo1.Example2.Show2();
return 0;
}
}
}
}
// Lp Example2 c cng namespace MyLib.Demo1 vi
NnTngNgnNgC#
=A
NgnNgLpTrnhC#
//lp Example1 nhng hai khai bo khng cng mt khi.
namespace MyLib.Demo1
{
class Example2
{
public static void Show2()
{
Console.WriteLine("Lop Example2);
}
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
9o& :(e#&!e1
9o& :(e#&!e)
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
I 56 ).22 tr9n cK hai i3& cmn 7u ] 7; c2ch gOi &et na&'sCac' th;nh .i9n .; c2ch khai L2o
c2c na&sCac'. Nh ch$ng ta thhV trong na&'sCac' MyLib cK hai na&'sCac' con cong chC 7;
Demo1 .; Demo2v h;& Main ca Demo2 sH Gc chFng trnh thWc hi/nv .; trong h;& Main
n;V cK gOi hai h;& th;nh .i9n tdnh ca hai 7C Example1 .; Example2 ca na&'sCac'
Demo1.
I 56 tr9n cng a ra c2ch khai L2o kh2c c2c 7C trong na&'sCac'. [ai 7C Example1 .;
Example2 i`u cong thuec &et na&'sCac' MyLib.Demo1v tuV nhi9n Example2 Gc khai L2o
&et khi ri9ng 7 LYng c2ch sE 56ng khai L2ou
namespace MyLib.Demo1
{
class Example2
{
....
}
}
i/c khai L2o ri9ng 7 n;V cK th3 cho ChgC tr9n nhi`u tSC tin ngun kh2c nhauv &in sao D&
LDo khai L2o $ng t9n na&sCac' th ch$ng .cn thuec .` cong &et na&'sCac'.
%/c cha 2bn Ii5n 26ch
^i .i c2c .I 56 &inh hOa trong c2c Chmn trcv khi Li9n 5:ch th to;n Le chFng
trnh sH Gc Li9n 5:ch. TuV nhi9nv cK V9u cmu thWc t# 7; ch$ng ta chb &un &et Chmn trong
NnTngNgnNgC#
=T
NgnNgLpTrnhC#
chFng trnh Gc Li9n 5:ch ec 7SCv .I 56 nh khi 5'Lug chFng trnh hoac UPV 5Wng c2c
4ng 56ng...
Trc khi &et &z ngun Gc Li9n 5:chv &et chFng trnh kh2c Gc gOi 7; chFng trnh
ti`n UE 7] sH thWc hi/n trc .; chuMn L: c2c oBn &z ngun 3 Li9n 5:ch. *hFng trnh ti`n
UE 7] n;V sH t& trong &z ngun c2c kI hi/u chb 5cn Li9n 5:ch ac Li/tv tht cD c2c chb 5cn Li9n
5:ch n;V `u Gc L_t mu .i 5hu r;o {@}. *2c chb 5cn cho ChgC ch$ng ta :nh nghda c2c :nh
5anh .; ki3& tra c2c sW tn tBi ca c2c :nh 5anh K.
]6nh nghca 6nh 2anh
*Pu 7/nh ti`n UE 7] sauu
#define DEBUG
+/nh tr9n :nh nghda &et :nh 5anh ti`n UE 7] cK t9n 7; DEBUG. Mac 5o nh?ng chb th: ti`n UE
7] kh2c cK th3 Gc at Lht c4 f Pu trong chFng trnhv nhng .i chb th: :nh nghda :nh
5anh th ChDi at trc tht cD c2c 7/nh kh2cv Lao g& cD cPu 7/nh using.
^3 ki3& tra &et :nh 5anh z Gc :nh nghda th ta 5ong c$ Ch2C #if dinh danh. po K ta
cK th3 .i#t nh sauu
#define DEBUG
//...Cc doan m ngun bnh thng, khng bi tc dng bi trnh tin x l
...
#if DEBUG
// Cc doan m ngun trong khi if debug doc bin dich
#else
// Cc doan m ngun khng dinh ngha debug v khng doc bin dich
#endif
//...Cc doan m ngun bnh thng, khng bi tc dng bi trnh tin x l
"hi chFng trnh ti`n UE 7] thWc hi/nv ch$ng sH t& thhV cPu 7/nh #define DEBUG .; 7u 7Bi
:nh 5anh DEBUG n;V. Ti#C th'o trnh ti`n UE 7] n;V sH LQ !ua tht cD c2c oBn &z Lnh
thng kh2c ca *@ .; t& c2c khi #ifv #elsev .; #endif.
*Pu 7/nh #if sH ki3& tra :nh 5anh DEBUGv 5o :nh 5anh n;V z Gc :nh nghdav n9n oBn
&z ngun gi?a khi #if #n #else sH Gc Li9n 5:ch .;o chFng trnh. *n oBn &z ngun
gi?a #else .; #endif sH kh>ng Gc Li9n 5:ch. T4c 7; oBn &z ngun n;V sH kh>ng Gc
thWc hi/n haV Uuht hi/n L9n trong &z hGC ng? ca chFng trnh.
Trng hGC cPu 7/nh #if sai t4c 7; kh>ng cK :nh nghda &et :nh 5anh DEBUG trong chFng
trnhv khi K oBn &z ngun f gi?a khi #if .; #else sH kh>ng Gc a .;o chFng trnh 3
Li9n 5:ch &; ngGc 7Bi oBn &z ngun f gi?a khi #else .; #endif sH Gc Li9n 5:ch.
L;> tu Tht cD c2c oBn &z ngun L9n ngo;i #if .; #endif th kh>ng L: t2c eng Lfi trnh
ti`n UE 7] .; tht cD c2c &z n;V `u Gc a .;o 3 Li9n 5:ch.
NnTngNgnNgC#
A0
NgnNgLpTrnhC#
Kh9ng 6nh nghca 6nh 2anh
SE 56ng chb th: ti`n UE 7] #undef 3 U2c :nh trBng th2i ca &et :nh 5anh 7; kh>ng
Gc :nh nghda. Nh ch$ng ta z Li#t trnh ti`n UE 7] sH thWc hi/n tJ tr9n Uung 5iv 5o .SV
&et :nh 5anh z Gc khai L2o L9n tr9n .i chb th: #define sH cK hi/u !uD #n khi &et gOi
cPu 7/nh @undef :nh 5anh K haV #n cui chFng trnhu
#define DEBUG
#if DEBUG
// oan code ny doc bin dich
#endif
....
#undef DEBUG
....
#if DEBUG
// oan code ny khng doc bin dich
#endif
.....
#if mu ti9n $ng 5o DEBUG Gc :nh nghdav cn #if th4 hai sai kh>ng Gc Li9n 5:ch .
DEBUG z Gc :nh nghda 7Bi 7; #undef.
Ngo;i ra cn cK chb th: #elif .; #else cung chC c2c chb 5cn Ch4c tBC hFn. *hb 5cn #elif cho
ChgC sE 56ng 7ogic selse-ift. Ta cK th3 5in giDi &et chb 5cn nh sauu sN@> DEBUG th #-m
+ng NiI+ 1f ng;H+ #Li n@> 0/S0 th #-m +ng NiI+ 2f n@> sai tXt +* th #-m tr;Wng hHp Ftu
....
#if DEBUG
// oan code ny doc bin dich nu DEBUG doc dinh ngha
#elif TEST
//oan code ny doc bin dich nu DEBUG khng doc dinh ngha
// v TEST doc dinh ngha
#else
//oan code ny doc bin dich nu c DEBUG v
//TEST khng doc dinh ngha.
#endif
....
Trong .I 56 tr9n th chb th: ti`n UE 7] #if mu ti9n sH ki3& tra :nh 5anh DEBUGv n#u :nh
5anh DEBUG z Gc :nh nghda th oBn &z ngun f gi?a #if .; #elif sH Gc Li9n 5:chv .;
tht cD c2c Chmn cn 7Bi cho #n chb th: #endif `u kh>ng Gc Li9n 5:ch. N#u DEBUG kh>ng
Gc :nh nghda th #elif sH ki3& tra :nh 5anh TESTv oBn &z f gi?a #elif .; #else sH Gc
NnTngNgnNgC#
A1
NgnNgLpTrnhC#
thWc thi khi TEST Gc :nh nghda. *ui cong n#u cD hai DEBUG .; TEST `u kh>ng Gc
:nh nghda th c2c oBn &z ngun gi?a #else .; #endif sH Gc Li9n 5:ch.
%Pu hSi *7 tr= ,i
CU> hVi 1u SW kh2c nhau gi?a 5Wa tr9n th;nh Chmn {*o&Con'nti8as'5} .; hng i tGng
{jLk'cti jri'nt'5}
0r* #Wi 1) Ph,t triin dOa tr%n th-nh ph.n +6 thi =;H+ _'m nh; #- mg rYng +7a #p trnh
h;ong =ci t;Hng( MYt th-nh ph.n #- mYt 1hci mJ ng>Kn ri%ng +6 thi thO+ hiIn mYt nhiIm N:
=^+ iIt( Lp trnh dOa tr%n th-nh ph.n ao gKm NiI+ tLo nhiD> +,+ th-nh ph.n tO hoLt =Yng
+6 thi =;H+ dCng #Li( Sa> =6 +h3ng ta +6 thi #i%n 1@t +h3ng #Li =i _Uy dOng +,+ Png d:ng(
CU> hVi 2u Nh?ng ng>n ng? n;o kh2c Gc U'& nh 7; hng i tGng
0r* #Wi 2) C,+ ngn ng nh; #- C{{f |aNaf Sma##0a#1f 8is>a# 4asi+(N/0 +mng +6 thi =;H+
sn d:ng +ho #p trnh h;ong =ci t;Hng( CEn rXt nhiD> nhng ngn ng 1h,+ nh;ng 1hng
=;H+ phk i@n #rm(
CU> hVi Fu TBi sao trong ki3u s kh>ng n9n khai L2o ki3u 5? 7i/u 7n thaV . 5ong ki3u 5?
7i/u nhQ hFn
0r* #Wi F) M^+ dC =iD> +6 thi _'m #- 1h, hHp #tf nh;ng tht sO 1hng hiI> A>* #rm( Ch3ng ta
1hng n%n sn d:ng nhiD> t-i ng>y%n Y nho h<n mP+ +.n thi@t( ?hi =6 N5a #Jng ph9 Y nho
#Li N5a hLn +h@ tc+ =Y +7a +h;<ng trnh(
CU> hVi Gu *huV/n g UDV ra n#u ta g2n gi2 tr: P& .;o Li#n ki3u kh>ng 5hu
0r* #Wi G) Ch3ng ta s` nhn =;H+ #ai +7a trnh i%n dM+h n6i rbng 1hng thi g,n gi, trM Um
+ho i@n 1hng dX> trong tr;Wng hHp ta g,n gi, trM hbng Um( CEn n@> trong tr;Wng hHp 1@t
A>* #- Um =O<+ t9nh trong ii> thP+ 1hi +hLy +h;<ng trnh th +h3ng ta s` nhn =;H+ #ai d
#iI>( 8iI+ 1iim tra N- _n #t #ai d #iI> s` =O<+ trnh -y trong +,+ ph.n sa>(
CU> hVi Qu Nh?ng ng>n ng? n;o kh2c h\ trf *o&&on TVC' SVst'& {*TS} trong *o&&on
+anguag' ,unti&' {*+,}
0r* #Wi Q) Mi+rosoTt 8is>a# 4asi+ \8'rsion w]f 8is>a# C{{(N/0 +Cng ha trH C0S( 0h%m N-o
=6 #- mYt sc phi%n *n +7a ngn ng 1h,+ +mng =;H+ +h>yin N-o C0S( 4ao gKm Pythonf
C4Lf P'r#f |aNa( Ch3ng ta +6 thi _'m tr%n trang w' +7a Mi+rosoTt =i i@t th%m +hi ti@t(
CU> hVi vu *K ChDi cn nh?ng cPu 7/nh i`u khi3n kh2c
0r* #Wi v) d3ngf +,+ +U> #Inh n-y nh; sa>) throwf tryf +at+h N- Tina##y( Ch3ng ta s` =;H+ hB+
trong +h;<ng _n #t ngoLi #I(
CU> hVi wu *K th3 sE 56ng chu\i .i cPu 7/nh s(itch
0r* #Wi w) &o-n to-n =;H+f +h3ng ta sn d:ng i@n gi, trM +h>ai trong switch rKi sa> =6
dCng gi, trM +h>ai trong +U> #Inh +as'( L;> t #- +h>ai #- nhng 1t tO =<n gi*n nbm gia hai
dX> ngo^+ nh,y(
%Pu hSi th5"
CU> hVi 1u C6 ao nhi%> +,+h 1hai ,o +omm'nt trong ngn ng C#f +ho i@t +hi ti@tu
NnTngNgnNgC#
A2
NgnNgLpTrnhC#
CU> hVi 2u Nhng t5 th'o sa> t5 n-o #- t5 1h6a trong C#) Ti'#df +astf asf oR'+tf throwf
Toota##f dof g'tf s'tf as1'ta##(
CU> hVi Fu Nhng 1h,i niIm +h9nh +7a ngn ng #p trnh h;ong =ci t;Hngu
CU> hVi G) SO 1h,+ nha> gia hai #Inh Writ' N- Writ'Lin'u
CU> hVi Qu C# +hia #-m mXy 1ii> d #iI> +h9nhu N@> ta tLo mYt #op t%n myC#ass th #op n-y
=;H+ _@p N-o 1ii> d #iI> n-ou
CU> hVi vu ?ii> +h>ai trong C# #- 1ii> d #iI> n-ou
CU> hVi wu D #iI> +7a i@n 1ii> d #iI> tham +hi@> =;H+ #;> g =U> trong Y nhou
CU> hVi xu SO 1h,+ nha> gia #op N- +X> tr3+ trong C#u ?hi n-o th dCng +X> tr3+ tct h<n #-
dCng +#assu
CU> hVi xu SO 1h,+ nha> gia 1ii> >nsign'd N- sign'd trong 1ii> sc ng>y%nu
CU> hVi yu ?ii> d #iI> n-o nhV nhXt +6 thi #;> tr =;H+ gi, trM GQu
CU> hVi 1$u Sc #on nhXtf N- nhV nhXt +7a 1ii> int #- sc n-ou
CU> hVi 11) C6 ao nhi%> it trong mYt yt'u
CU> hVi 12) ?ii> d #iI> n-o trong (N/0 t;<ng Png Noi 1ii> int trong C#u
CU> hVi 1F) Nhng t5 1h6a n-o #-m thay =ki #>Kng +7a +h;<ng trnhu
CU> hVi 1G) ?@t A>* +7a 1QG #- ao nhi%>u
CU> hVi 1Q) SO 1h,+ nha> gia +h>yin =ki t;Wng minh N- +h>yin =ki ng.m =Mnhu
CU> hVi 1v) C6 thi +h>yin t5 mYt gi, trM #ong sang gi, trM int hay 1hngu
CU> hVi 1w) Sc #.n tci thii> +,+ #Inh trong while =;H+ thO+ hiInu
CU> hVi 1x) Sc #.n tci thii> +,+ #Inh trong do while =;H+ thO+ hiInu
CU> hVi 1y) LInh n-o dCng =i tho,t ra 1hVi NEng #^pu
CU> hVi 2$) LInh n-o dCng =i A>a NEng #^p 1@ ti@pu
CU> hVi 21) ?hi n-o dCng i@n N- 1hi n-o dCng hbngu
CU> hVi 22) Cho i@t gi, trM CanhC>t trong 1ii> #iIt 1% sa>)
enum LoaiChim
{
HaiAu,
BoiCa,
DaiBang = 50,
CanhCut
}
CU> hVi 2F) Cho i@t +,+ #Inh phUn nh,nh trong C#u
47i tT-
4-i tp 1u Nhp N-of i%n dM+h N- +hLy +h;<ng trnh( &Jy +ho i@t +h;<ng trnh #-m =iD>
gu
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
NnTngNgnNgC#
A)
NgnNgLpTrnhC#
class BaiTap31
{
public static void Main()
{
int x = 0;
for(x = 1; x < 10; x++)
{
System.Console.Write("{0:03}, x);
}
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
4-i tp 2u 0m #ai +7a +h;<ng trnh sa>u sna #ai N- i%n dM+h +h;<ng trnh(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
class BaiTap32
{
public static void Main()
{
for(int i=0; i < 10 ; i++)
System.Console.WriteLine("so :{1}, i);
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
4-i tp F) 0m #ai +7a +h;<ng trnh sa>( Sna #ai N- i%n dM+h #Li +h;<ng trnh(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
class BaiTap33
{
public static void Main()
{
double myDouble;
decimal myDecimal;
myDouble = 3.14;
myDecimal = 3.14;
Console.WriteLine("My Double: {0}, myDouble);
Console.WriteLine("My Decimal: {0}, myDecimal);
}
}
NnTngNgnNgC#
AN
NgnNgLpTrnhC#
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
4-i tp G) 0m #ai +7a +h;<ng trnh sa>( Sna #ai N- i%n dM+h #Li +h;<ng trnh(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
class BaiTap34
{
static void Main()
{
int value;
if (value > 100);
System.Console.WriteLine("Number is greater than 100);
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
4-i tp Q) 8i@t +h;<ng trnh hiin thM ra m-n hnh F 1ii> sa>)






a}




L}






c}
4-i tp v) 8i@t +h;<ng trnh hiin ra tr%n m-n hnh(
NnTngNgnNgC#
A-
NgnNgLpTrnhC#
1
2 ) 2
) N - N )
N - 0 = 0 - N
- 0 = A T A = 0 -
0 = A T 0 1 0 T A = 0
= A T 0 1 2 ) 2 1 0 T A =
A T 0 1 2 ) N - N ) 2 1 0 T A
T 0 1 2 ) N - 0 = 0 - N ) 2 1 0 T
0 1 2 ) N - 0 = A T A = 0 - N ) 2 1 0
4-i tp wu 8i@t +h;<ng trnh in 1t tO sc \$((y] N- 1t tO +h \a((] Noi mJ 1t tO t;<ng Png +7a
t5ng 1t tO
89 d:)
$ ) Gx
1 ) Gy
((((
4-i tp xu 8i@t +h;<ng trnh gi*i ph;<ng trnh + nhXtf +ho phqp ng;Wi dCng nhp N-o gi,
trM af (
4-i tp yu 8i@t +h;<ng trnh gi*i ph;<ng trnh + haif +ho phqp ng;Wi dCng nhp N-o gi, trM
af f +(
4-i tp 1$u 8i@t +h;<ng trnh t9nh +h> Ni N- diIn t9+h +7a +,+ hnh sa>) =;Wng trEnf hnh +h
nhtf hnh thangf tam gi,+(
NnTngNgnNgC#
A0
NgnNgLpTrnhC#
C4/Nng #
$vw xyNG LzP , -{T T|}NG
-cn4 ng4u6 )*+
T4@~c ten4 tr@& cJ+
T46G s. cO6 +4/Nng t4`c
T:o X.i t/0ng
a~ Q4Ri '(ng
24Ri t:o gi3n t4In4 Hibn
a~ Q4Ri '(ng s6o c4+
T5 Q4f6 t4is
V= 'ng c<c t4In4 Hibn st6tic
Gii +4/Nng t4`c st6tic
V= 'ng g~ Q4Ri '(ng st6tic
V= 'ng g~ Q4Ri '(ng +riH6t[
V= 'ng t4@~c ten4 st6tic
HO& X.i t/0ng
Tr@&!n t46G s.
N:+ c4;ng +4/Nng t4`c
-fng gfi ' )iC@ H*i t4In4 +4n t4@~c ten4
T4@~c ten4 c4F Xic
C%@ 4ji k gIi tJ+
*hFng ) thDo 7uSn rht nhi`u ki3u 5? 7i/u cF LDn ca ng>n ng? *@v nh intv long and
char. TuV nhi9n tr2i ti& .; 7inh hn ca *@ 7; khD nqng tBo ra nh?ng ki3u 5? 7i/u &iv Ch4c
XyDngLp!"#iT$%ng
A=
NgnNgLpTrnhC#
tBC. Ngi 7SC trnh tBo ra c2c ki3u 5? 7i/u &i LYng c2ch UPV 5Wng c2c 7C i tGng .; K
cng chInh 7; c2c .hn ` ch$ng ta cmn thDo 7uSn trong chFng n;V.
^PV 7; khD nqng 3 tBo ra nh?ng ki3u 5? 7i/u &iv &et ac tInh !uan trOng ca ng>n
ng? 7SC trnh hng i tGng. *h$ng ta cK th3 UPV 5Wng nh?ng ki3u 5? 7i/u &i trong ng>n
ng? *@ LYng c2ch khai L2o .; :nh nghda nh?ng 7C. Ngo;i ra ta cng cK th3 :nh nghda c2c
ki3u 5? 7i/u .i nh?ng giao 5i/n {int'rfac'} sH Gc L;n trong *hFng A sau. Th3 hi/n ca
&et 7C Gc gOi 7; nh?ng i tGng {oLk'ct}. Nh?ng i tGng n;V Gc tBo trong Le nh
khi chFng trnh Gc thWc hi/n.
SW kh2c nhau gi?a &et 7C .; &et i tGng cng ging nh sW kh2c nhau gi?a kh2i
ni/& gi?a 7o;i &o .; &et con &o Mun ang nY& L9n chPn ca ta. *h$ng ta kh>ng th3
6ng chB& haV oa gin .i kh2i ni/& &o nhng cK th3 thWc hi/n i`u K Gc .i &o
Munv nK 7; &et thWc th3 sng engv ch4 kh>ng trJu tGng nh kh2i ni/& hO 7o;i &o.
Met hO &o &> tD nh?ng con &o cK c2c ac tInhu cK trOng 7Gngv cK chi`u caov &;u
&_tv &;u 7>ngv...ch$ng cng cK h;nh eng nh 7; qn ngv 7'o trov...&et con &ov .I 56 nh
&o Mun chng hBnv nK cng cK trOng 7Gng U2c :nh 7; - kgv chi`u cao 1- c&v &;u &_t 'nv
7>ng 'n...NK cng cK nh?ng khD nqng nh qn ng 7'o trov..
+Gi Ich to 7n ca nh?ng 7C trong ng>n ng? 7SC trnh 7; khD nqng Kng gKi c2c thuec
tInh .; tInh chht ca &et thWc th3 trong &et khi Fnv tW cK nghdav tW khD nqng 5uV tr . I 56
khi ch$ng ta &un s_C nei 5ung nh?ng th3 hi/n haV i tGng ca 7C i`u khi3n ListBox tr9n
~in5o(sv chb cmn gOi c2c i tGng n;V th ch$ng sH tW s_C U#Cv cn .i/c ch$ng 7;& ra sao
th ta kh>ng !uan tP&v .; cng chb cmn Li#t LhV nhi9u K th>i.
^Kng gKi cong .i a hnh {Co7V&orChis&} .; k# thJa {inh'ritanc'} 7; c2c thuec tInh
chInh V#u ca Lht k &et ng>n ng? 7SC trnh hng i tGng n;o.
*hFng N n;V sH trnh L;V c2c ac tInh ca ng>n ng? 7SC trnh *@ 3 UPV 5Wng c2c 7C
i tGng. Th;nh Chmn ca &et 7Cv c2c h;nh .i .; c2c thuec tInhv Gc U'& nh 7; th;nh
.i9n ca 7C {c7ass &'&L'r}. Ti#C th'o chFng cng trnh n;V kh2i ni/& .` ChFng th4c
{&'tho5} Gc 5ong 3 :nh nghda h;nh .i ca &et 7Cv .; trBng th2i ca c2c Li#n th;nh .i9n
hoBt eng trong &et 7C. Met ac tInh &i &; ng>n ng? *@ a ra 3 UPV 5Wng 7C 7; kh2i
ni/& thuec tInh {CroC'rtV}v th;nh Chmn thuec tInh n;V hoBt eng ging nh c2ch ChFng th4c
3 tBo &et 7Cv nhng LDn chht ca ChFng th4c n;V 7; tBo &et 7C giao 5i/n cho L9n ngo;i
tFng t2c .i Li#n th;nh .i9n &et c2ch gi2n ti#Cv ta sH L;n sPu .hn ` n;V trong chFng.
]6nh nghca ,-
^3 :nh nghda &et ki3u 5? 7i/u &i haV &et 7C mu ti9n ChDi khai L2o ri sau K &i
:nh nghda c2c thuec tInh .; ChFng th4c ca ki3u 5? 7i/u K. "hai L2o &et 7C LYng c2ch sE
56ng tJ kho2 class. *$ Ch2C mV ca khai L2o &et 7C nh sauu
[Thuc tnh] [B sung truy cp] class <inh danh lp> [: Lp co s]
{
XyDngLp!"#iT$%ng
AA
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
<Phn thn ca lp: bao gm dinh ngha cc thuc tnh v
phong thc hnh dng >
}
Th;nh Chmn thuec tInh ca i tGng sH Gc trnh L;V chi ti#t trong chFng sauv cn th;nh
Chmn L sung truV cSC cng sH Gc trnh L;V ti#C ngaV &6c 5i. ^:nh 5anh 7C chInh 7; t9n
ca 7C 5o ngi UPV 5Wng chFng trnh tBo ra. +C cF sf 7; 7C &; i tGng sH k# thJa 3
Ch2t tri3n ta sH L;n sau. Tht cD c2c th;nh .i9n ca 7C Gc :nh nghda L9n trong thPn ca 7Cv
Chmn thPn n;V sH Gc Lao LOc Lfi hai 5hu {}.
2hi +h3u Trong ng>n ng? *@ Chmn k#t th$c ca 7C kh>ng cK hu chh& ChMV ging nh
khai L2o 7C trong ng>n ng? **. TuV nhi9n n#u ngi 7SC trnh th9& .;o th trnh Li9n
5:ch *@ .cn chhC nhSn &; kh>ng a ra cDnh L2o 7\i.
Trong *@v &Oi chuV/n `u UDV ra trong &et 7C. Nh c2c .I 56 &; ch$ng ta z t& hi3u trong
chFng )v c2c h;& i`u Gc a .;o trong &et 7Cv k3 cD h;& mu .;o ca chFng trnh
{h;& Main()}u
public class Tester
{
public static int Main()
{
//....
}
}
^i`u cmn nKi f PV 7; ch$ng ta cha tBo Lht c4 th3 hi/n n;o ca 7Cv t4c 7; tBo i tGng cho
7C Tester. ^i`u g kh2c nhau gi?a &et 7C .; th3 hi/n ca 7C 3 trD 7i cho cPu hQi n;V
ch$ng ta L_t mu U'& Ugt sW kh2c nhau gi?a ki3u 5? 7i/u int .; &et Li#n ki3u int . Ta cK .i#t
nh sauu
int var1 = 10;
tuV nhi9n ta kh>ng th3 .i#t Gc
int = 10;
Ta kh>ng th3 g2n gi2 tr: cho &et ki3u 5? 7i/uv thaV .;o K ta chb Gc g2n 5? 7i/u cho &et
i tGng ca ki3u 5? 7:9u Kv trong trng hGC tr9n i tGng 7; Li#n var1.
"hi ch$ng ta tBo &et 7C &iv K chInh 7; .i/c :nh nghda c2c thuec tInh .; h;nh .i ca tht cD
c2c i tGng ca 7C. ZiD sE ch$ng ta ang 7SC trnh 3 tBo c2c i`u khi3n trong c2c 4ng
56ng tr9n ~in5o(sv c2c i`u khi3n n;V gi$C cho ngi 5ong tFng t2c tt .i ~in5o(sv nh
7; ListBoxv TextBoxv ComboBoxv...Met trong nh?ng i`u khi3n th>ng 56ng 7; ListBoxv i`u
khi3n n;V cung chC &et 5anh s2ch 7i/t k9 c2c &6c chOn .; cho ChgC ngi 5ong chOn c2c
&6c tin trong K.
ListBox n;V cng cK c2c thuec tInh kh2c nhau nhuu chi`u caov L` 5;Vv .: trIv .; &;u s_c th3
hi/n .; c2c h;nh .i ca ch$ng nhu ch$ng cK th3 th9& Li &6c tinv s_C U#Cv...
XyDngLp!"#iT$%ng
AT
NgnNgLpTrnhC#
Ng>n ng? 7SC trnh hng i tGng cho ChgC ch$ng ta tBo ki3u 5? 7i/u &i 7; 7C ListBoxv
7C n;V Lao LOc c2c thuec tInh cng nh khD nqng nhu c2c thuec tInh heightv widthv
locationv colorv c2c ChFng th4c haV h;nh .i nh Add(), Remove(), Sort(),...
*h$ng ta kh>ng th3 g2n 5? 7i/u cho ki3u ListBoxv thaV .;o K mu ti9n ta ChDi tBo &et i
tGng cho 7C Ku
ListBox myListBox;
Met khi ch$ng ta z tBo &et th3 hi/n ca 7C ListBox th ta cK th3 g2n 5? 7i/u cho th3 hi/n K.
TuV nhi9n oBn 7/nh tr9n cha th3 tBo i tGng trong Le nh Gcv ta sH L;n ti#C. 8PV gi ta
sH t& hi3u c2ch tBo &et 7C .; tBo c2c th3 hi/n th>ng !ua .I 56 &inh hOa N.1. I 56 n;V tBo
&et 7C cK ch4c nqng hi3u th: thi gian trong &et ng;V. +C n;V cK h;nh .i th3 hi/n ng;Vv
th2ngv nq&v giv Ch$tv giPV hi/n h;nh. ^3 7;& Gc i`u tr9n th 7C n;V cK 0 thuec tInh haV
cn gOi 7; Li#n th;nh .i9nv cong .i &et ChFng th4c nh sauu
89 d: G(1) 0Lo mYt #op 0hoigian =<n gi*n nh; sa>(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
public class ThoiGian
{
public void ThoiGianHienHanh()
{
Console.WriteLine("Hien thi thoi gian hien hanh);
}
// Cc bin thnh vin
int Nam;
int Thang;
int Ngay;
int Gio;
int Phut;
int Giay;
}
public class Tester
{
static void Main()
{
ThoiGian t = new ThoiGian();
t.ThoiGianHienHanh();
}
}
XyDngLp!"#iT$%ng
T0
NgnNgLpTrnhC#
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*u
,ien thi thoi gian hien hanh
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
+C ThoiGian chb cK &et ChFng th4c chInh 7; h;& ThoiGianHienHanh()v Chmn thPn ca
ChFng th4c n;V Gc :nh nghda L9n trong ca 7C ThoiGian. ^i`u n;V kh2c .i ng>n ng?
*v *@ kh>ng i hQi ChDi khai L2o trc khi :nh nghda &et ChFng th4cv .; cng kh>ng
h\ trG .i/c khai L2o ChFng th4c trong &et tSC tin .; sau K :nh nghda f &et tSC tin kh2c.
*@ kh>ng cK c2c tSC tin ti9u `v 5o .SV tht cD c2c ChFng th4c Gc :nh nghda ho;n to;n L9n
trong ca 7C. 1hmn cui ca :nh nghda 7C 7; Chmn khai L2o c2c Li#n th;nh .i9nu Namv
Thangv Ngayv Giov Phutv .a Giay.
Sau khi :nh nghda Uong 7C ThoiGianv th ti#C th'o 7; Chmn :nh nghda 7C Testerv 7C n;V cK
ch4a &et h;& kh2 thPn thi/n .i ch$ng ta 7; h;& Main(). 89n trong h;& Main cK &et th3
hi/n ca 7C ThoiGian Gc tBo ra .; g2n gi2 tr: cho i tGng t. 8fi . t 7; th3 hi/n ca i
tGng ThoiGianv n9n h;& Main() cK th3 sE 56ng ChFng th4c ca tu
t.ThoiGianHienHanh();
ThuHc tEnh truL cT-
Thuec tInh truV cSC !uV#t :nh khD nqng c2c ChFng th4c ca 7C Lao g& .i/c c2c ChFng
th4c ca 7C kh2c cK th3 nhn thhV .; sE 56ng c2c Li#n th;nh .i9n haV nh?ng ChFng th4c
L9n trong 7C. 8Dng N.1 tK& t_t c2c thuec tInh truV cSC ca &et 7C trong *@.
T4@~c ten4 Gi*i 4:n tr@& cJ+
public "h>ng hBn ch#. Nh?ng th;nh .i9n Gc 2nh 5hu
public cK th3 Gc 5ong Lfi Lht k c2c ChFng th4c ca
7C Lao g& nh?ng 7C kh2c.
private Th;nh .i9n trong &et 7C y Gc 2nh 5hu 7; private
th chb Gc truV cSC Lfi c2c ChFng th4c ca 7C y.
protected Th;nh .i9n trong 7C y Gc 2nh 5hu 7; protected
th chb Gc c2c ChFng th4c L9n trong 7C y .; nh?ng
ChFng th4c 5cn Uuht tJ 7C y truV cSC.
internal Th;nh .i9n trong 7C y Gc 2nh 5hu 7; internal th
Gc truV cSC Lfi nh?ng ChFng th4c ca Lht c4 7C
n;o trong cong khi hGC ng? .i y.
protected internal Th;nh .i9n trong 7C y Gc 2nh 5hu 7; protected
internal Gc truV cSC Lfi c2c ChFng th4c ca 7C yv
c2c ChFng th4c ca 7C 5cn Uuht ca yv .; Lht c4 7C
n;o trong cong khi hGC ng? ca y.
XyDngLp!"#iT$%ng
T1
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
4*ng G(1) 0h>Y+ t9nh tr>y +p(
Mong &un chung 7; thi#t k# c2c Li#n th;nh .i9n ca 7C f thuec tInh private. "hi K chb cK
ChFng th4c th;nh .i9n ca 7C truV cSC Gc gi2 tr: ca Li#n. *@ U'& thuec tInh private 7;
&ac :nh n9n trong .I 56 N.1 ta kh>ng khai L2o thuec tInh truV cSC cho 0 Li#n n9n &ac :nh
ch$ng 7; privateu
// Cc bin thnh vin private
int Nam;
int Thang;
int Ngay;
int Gio;
int Phut;
int Giay;
po 7C Tester .; ChFng th4c th;nh .i9n ThoiGianHienHanh ca 7C ThoiGian Gc khai
L2o 7; public n9n Lht k 7C n;o cng cK th3 truV cSC Gc.
2hi +h3u ThKi !u'n 7SC trnh tt 7; khai L2o tng &inh c2c thuec tInh truV cSC ca Li#n
th;nh .i9n haV c2c ChFng th4c trong &et 7C. Mac 5o ch$ng ta Li#t ch_c ch_n rYng c2c
th;nh .i9n ca 7C 7; Gc khai L2o private &ac :nh. i/c khai L2o tng &inh n;V sH 7;&
cho chFng trnh 5 hi3uv r r;ng .; tW nhi9n hFn.
Tha" s cda -h?ng th1c
Trong c2c ng>n ng? 7SC trnh th tha& s .; i &6c Gc U'& 7; nh nhauv cng tFng
tW khi ang nKi .` ng>n ng? hng i tGng th ta gOi &et h;& 7; &et ChFng th4c haV
h;nh .i. Tht cD c2c t9n n;V i`u tFng ng .i nhau.
Met ChFng th4c cK th3 7hV Lht k s 7Gng tha& s n;ov *2c tha& s n;V th'o sau Lfi
t9n ca ChFng th4c .; Gc Lao LOc L9n trong 5hu ngoac trn {}. M\i tha& s ChDi khai L2o
k& .i ki3u 5? 7i/u. .I 56 ta cK &et khai L2o :nh nghda &et ChFng th4c cK t9n 7; Methodv
ChFng th4c kh>ng trD .` gi2 tr: n;o cD {khai L2o gi2 tr: trD .` 7; void}v .; cK hai tha& s 7;
&et ki3u int .; buttonu
void Method( int param1, button param2)
{
//...
}
89n trong thPn ca ChFng th4cv c2c tha& s n;V Gc U'& nh nh?ng Li#n c6c Lev ging
nh 7; ta khai L2o Li#n L9n trong ChFng th4c .; khfi tBo gi2 tr: LYng gi2 tr: ca tha& s
truV`n .;o. I 56 N.2 &inh hOa .i/c truV`n tha& s .;o &et ChFng th4cv trong trng hGC
n;V th hai tha& s ca ki3u 7; int .; float.
89 d: G(2) 0r>yDn tham sc +ho ph;<ng thP+(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
XyDngLp!"#iT$%ng
T2
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
using System;
public class Class1
{
public void SomeMethod(int p1, float p2)
{
Console.WriteLine("Ham nhan duoc hai tham so: {0} va {1},
p1,p2);
}
}
public class Tester
{
static void Main()
{
int var1 = 5;
float var2 = 10.5f;
Class1 c = new Class1();
c.SomeMethod( var1, var2 );
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*u
,a# nhan duoc hai tha# so: 5 $a 10.5
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
1hFng th4c SomeMethod sH 7hV hai tha& s int .; float ri hi3n th: ch$ng ta &;n hnh LYng
.i/c 5ong h;& Console.WriteLine{}. Nh?ng tha& s n;V cK t9n 7; p1 .; p2 Gc U'& nh 7;
Li#n c6c Le L9n trong ca ChFng th4c.
Trong ChFng th4c gOi Mainv cK hai Li#n c6c Le Gc tBo ra 7; var1 .; var2. "hi hai Li#n n;V
Gc truV`n cho ChFng th4c SomeMethod th ch$ng Gc 2nh UB th;nh hai tha& s p1 .;
p2 th'o th4 tW 5anh s2ch Li#n a .;o.
T<o i t@ng
Trong *hFng ) cK ` cSC #n sW kh2c nhau gi?a ki3u 5? 7i/u gi2 tr: .; ki3u 5? 7i/u tha&
chi#u. Nh?ng ki3u 5? 7i/u chuMn ca *@ nh intv charv floatv| 7; nh?ng ki3u 5? 7i/u gi2 tr:v
.; c2c Li#n Gc tBo ra tJ c2c ki3u 5? 7i/u n;V Gc 7u tr9n stack. TuV nhi9nv .i c2c i
tGng ki3u 5? 7i/u tha& chi#u th Gc tBo ra tr9n h'aCv sE 56ng tJ khKa n[\ 3 tBo &et i
tGngu
ThoiGian t = new ThoiGian();
XyDngLp!"#iT$%ng
T)
NgnNgLpTrnhC#
t thSt sW kh>ng ch4a gi2 tr: ca i tGng ThoiGianv nK chb ch4a :a chb ca i tGng Gc
tBo ra tr9n h'aCv 5o .SV t chb ch4a tha& chi#u #n &et i tGng &; th>i.
4H khei 2Vng
ThE U'& 7Bi .I 56 &inh hOa N.1v cPu 7/nh tBo &et i tGng cho 7C ThoiGian tFng tW nh
.i/c gOi thWc hi/n &et ChFng th4cu
ThoiGian t = new ThoiGian();
^$ng nh .SVv &et ChFng th4c sH Gc gOi thWc hi/n khi ch$ng ta tBo &et i tGng.
1hFng th4c n;V Gc gOi 7; Le khfi 5Wng {constructor}. *2c ChFng th4c n;V Gc :nh
nghda khi UPV 5Wng 7Cv n#u ta kh>ng tBo ra th *+, sH thaV &at ch$ng ta &; tBo ChFng th4c
khfi 5Wng &et c2ch &ac :nh. *h4c nqng ca Le khfi 5Wng 7; tBo ra i tGng Gc U2c :nh
Lfi &et 7C .; at trBng th2i n;V hGC 7/. Trc khi Le khfi 5Wng Gc thWc hi/n th i tGng
cha Gc chC Ch2t trong Le nh. Sau khi Le khfi 5Wng thWc hi/n ho;n th;nh th Le nh sH
7u gi? &et th3 hi/n hGC 7/ ca 7C .Ja khai L2o.
+C ThoiGian trong .I 56 N.1 kh>ng :nh nghda Le khfi 5Wng. po kh>ng :nh nghda n9n trnh
Li9n 5:ch sH cung chC &et Le khfi 5Wng cho ch$ng ta. 1hFng th4c khfi 5Wng &ac :nh Gc
tBo ra cho &et i tGng sH kh>ng thWc hi/n Lht c4 h;nh eng n;ov t4c 7; L9n trong thPn ca
ChFng th4c r\ng. *2c Li#n th;nh .i9n Gc khfi tBo c2c gi2 tr: tm& thng nh thuec tInh
nguV9n cK gi2 tr: 7; 0 .; chu\i th khfi tBo r\ngv..8Dng N.2 sau tK& t_t c2c gi2 tr: &ac :nh
Gc g2n cho c2c ki3u 5? 7i/u cF LDn.
2i_@ ' )iC@ Gi< trc Grc Xcn4
int, long, byte, 0
bool false
char `\0 (null)
enum 0
reference null
4*ng G(2) 2i, trM m^+ =Mnh +7a 1ii> d #iI> +< *n(
Thng thngv khi &un :nh nghda &et ChFng th4c khfi 5Wng ri9ng ta ChDi cung chC c2c
tha& s 3 h;& khfi 5Wng cK th3 khfi tBo c2c gi2 tr: kh2c ngo;i gi2 tr: &ac :nh cho c2c i
tGng. uaV 7Bi .I 56 N.1 giD sE ta &un truV`n thi gian hi/n h;nhu nq&v th2ngv ng;Vv|3
i tGng cK ] nghda hFn.
^3 :nh nghda &et Le khfi 5Wng ri9ng ta ChDi khai L2o &et ChFng th4c cK t9n ging nh t9n
7C z khai L2o. 1hFng th4c khfi 5Wng kh>ng cK gi2 tr: trD .` .; Gc khai L2o 7; public.
N#u ChFng th4c khfi 5Wng n;V Gc truV`n tha& s th ChDi khai L2o 5anh s2ch tha& s
ging nh khai L2o .i Lht k ChFng th4c n;o trong &et 7C. I 56 N.) Gc .i#t 7Bi tJ .I 56
N.1 .; th9& &et Le khfi 5Wng ri9ngv ChFng Ch4c khfi 5Wng n;V sH nhSn &et tha& s 7; &et
i tGng ki3u DateTime 5o *@ cung chC.
XyDngLp!"#iT$%ng
TN
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
89 d: G(F) dMnh nghea mYt Y 1hgi dOng(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
public class ThoiGian
{
public void ThoiGianHienHanh()
{
Console.WriteLine(" Thoi gian hien hanh la : {0}/{1}/{2}
{3}:{4}:{5}, Ngay, Thang, Nam, Gio, Phut, Giay);
}
// Hm khi dung
public ThoiGian( System.DateTime dt )
{
Nam = dt.ear;
Thang = dt.Month;
Ngay = dt.Day;
Gio = dt.Hour;
Phut = dt.Minute;
Giay = dt.Second;
}
// Bin thnh vin private
int Nam;
int Thang;
int Ngay;
int Gio;
int Phut;
int Giay;
}
public class Tester
{
static void Main()
{
System.DateTime currentTime = System.DateTime.Now;
ThoiGian t = new ThoiGian( currentTime );
t.ThoiGianHienHanh();
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
XyDngLp!"#iT$%ng
T-
NgnNgLpTrnhC#
?@t A>*u
hoi gian hien hanh !a: 5;+;)00) 9:10:)0
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Trong .I 56 tr9n ChFng th4c khfi 5Wng 7hV &et i tGng DateTime .; khfi tBo tht cD c2c
Li#n th;nh .i9n 5Wa tr9n gi2 tr: ca i tGng n;V. "hi ChFng th4c n;V thWc hi/n Uongv &et
i tGng ThoiGian Gc tBo ra .; c2c Li#n ca i tGng cng z Gc khfi tBo. [;&
ThoiGianHienHanh Gc gOi trong h;& Main() sH hi3n th: gi2 tr: thi gian 7$c i tGng Gc
tBo ra.
*h$ng ta thE LQ &et s 7/nh khfi tBo trong ChFng th4c khfi 5Wng .; cho thWc hi/n chFng
trnh 7Bi th c2c Li#n kh>ng Gc khfi tBo sH cK gi2 tr: &ac :nh 7; 0v 5o 7; Li#n nguV9n. Met
Li#n th;nh .i9n ki3u nguV9n sH Gc thi#t 7SC gi2 tr: 7; 0 n#u ch$ng ta kh>ng g2n nK trong
ChFng th4c khfi 5Wng. *h$ ] rYng ki3u 5? 7i/u gi2 tr: kh>ng th3 kh>ng Gc khfi tBov n#u ta
kh>ng khfi tBo th trnh Li9n 5:ch sH cung chC c2c gi2 tr: &ac :nh th'o LDng N.2.
Ngo;i ra trong chFng trnh N.) tr9n cK sE 56ng i tGng ca 7C DateTimev 7C DateTime
n;V Gc cung chC Lfi th .i/n Systemv 7C n;V cng cung chC c2c Li#n th;nh .i9n public
nhu earv Monthv Dayv Hourv Minutev .; Second tFng tW nh 7C ThoiGian ca ch$ng ta.
Th9& .;o K 7; 7C n;V cK a ra &et ChFng th4c th;nh .i9n tdnh t9n 7; Nowv ChFng th4c
Now sH trD .` &et tha& chi#u #n &et th3 hi/n ca &et i tGng DateTime Gc khfi tBo
.i thi gian hi/n h;nh.
Th'o nh tr9n khi 7/nh u
System.DataTime currentTime = System.DateTime.Now();
Gc thWc hi/n th ChFng th4c tdnh Now{} sH tBo ra &et i tGng DateTime tr9n Le nh
h'aC .; trD .` &et tha& chi#u .; tha& chi#u n;V Gc g2n cho Li#n i tGng currentTime.
Sau khi i tGng currentTime Gc tBo th cPu 7/nh ti#C th'o sH thWc hi/n .i/c truV`n i
tGng currentTime cho ChFng th4c khfi 5Wng 3 tBo &et i tGng ThoiGianu
ThoiGian t = new ThoiGian( currentTime );
89n trong ChFng th4c khfi 5Wng n;V tha& s dt sH tha& chi#u #n i tGng DateTime 7;
i tGng .Ja tBo &; currentTime cng tha& chi#u. NKi c2ch kh2c 7$c n;V tha& s dt .;
currentTime cong tha& chi#u #n &et i tGng DateTime trong Le nh. Nh .SV ChFng
th4c khfi 5Wng ThoiGian cK th3 truV cSC Gc c2c Li#n th;nh .i9n public ca i tGng
DateTime Gc tBo trong h;& Main().
*K &et sW nhhn &Bnh f PV 7; i tGng DateTime Gc truV`n cho Le 5Wng ThoiGian chInh
7; i tGng z Gc tBo trong h;& Main .; 7; ki3u 5? 7i/u tha& chi#u. po .SV khi thWc hi/n
truV`n tha& s 7; &et ki3u 5? 7i/u tha& chi#u th con trQ Gc 2nh UB !ua ch4 ho;n to;n
kh>ng cK &et i tGng n;o Gc sao chgC 7Bi.
XyDngLp!"#iT$%ng
T0
NgnNgLpTrnhC#
Khei t<o Iin th7nh *i5n
*2c Li#n th;nh .i9n cK th3 Gc khfi tBo trWc ti#C khi khai L2o trong !u2 trnh khfi tBov thaV
. ChDi thWc hi/n .i/c khfi tBo c2c Li#n trong Le khfi 5Wng. ^3 thWc hi/n .i/c khfi tBo n;V
rht Fn giDn 7; .i/c sE 56ng ChgC g2n gi2 tr: cho &et Li#nu
private int Giay = 30; // Khi tao
i/c khfi tBo Li#n th;nh .i9n sH rht cK ] nghdav . khi U2c :nh gi2 tr: khfi tBo nh .SV th
Li#n sH kh>ng nhSn gi2 tr: &ac :nh &; trnh Li9n 5:ch cung chC. "hi K n#u c2c Li#n n;V
kh>ng Gc g2n 7Bi trong c2c ChFng th4c khfi 5Wng th nK sH cK gi2 tr: &; ta z khfi tBo. I
56 N.N &inh hOa .i/c khfi tBo Li#n th;nh .i9n khi khai L2o. Trong .I 56 n;V sH cK hai Le
5Wng ngo;i Le 5Wng &ac :nh &; trnh Li9n 5:ch cung chCv &et Le 5Wng thWc hi/n .i/c g2n
gi2 tr: cho tht cD c2c Li#n th;nh .i9nv cn Le 5Wng th4 hai th cng tFng tW nhng sH kh>ng
g2n gi2 tr: cho Li#n Giay.
89 d: G(G) Minh hoL sn d:ng 1hgi tLo i@n th-nh Ni%n(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
public class ThoiGian
{
public void ThoiGianHienHanh()
{
System.DateTime now = System.DateTime.Now;
System.Console.WriteLine("\n Hien tai: \t {0}/{1}/{2} {3}:{4}:{5},
now.Day, now.Month, now.ear, now.Hour, now.Minute, now.Second);
System.Console.WriteLine(" Thoi Gian:\t {0}/{1}/{2} {3}:{4}:{5},
Ngay, Thang, Nam, Gio, Phut, Giay);
}
public ThoiGian( System.DateTime dt)
{
Nam = dt.ear;
Thang = dt.Month;
Ngay = dt.Day;
Gio = dt.Hour;
Phut = dt.Minute;
Giay = dt.Second; // c gn cho bin thnh vin Giay
}
public ThoiGian(int ear, int Month, int Date, int Hour, int Minute)
{
Nam = ear;
Thang = Month;
Ngay = Date;
XyDngLp!"#iT$%ng
T=
NgnNgLpTrnhC#
Gio = Hour;
Phut = Minute;
}
private int Nam;
private int Thang;
private int Ngay;
private int Gio;
private int Phut;
private int Giay = 30 ; // bin doc khi tao.
}
public class Tester
{
static void Main()
{
System.DateTime currentTime = System.DateTime.Now;
ThoiGian t1 = new ThoiGian( currentTime );
t1.ThoiGianHienHanh();
ThoiGian t2 = new ThoiGian(2001,,3,10,5);
t2.ThoiGianHienHanh();
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*u
,ien tai: 5;+;)00) 10:15:5
hoi 1ian: 5;+;)00) 10:15:5
,ien tai: 5;+;)00) 10:15:5
hoi 1ian: 3;6;)001 10:5:30
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
N#u kh>ng khfi tBo gi2 tr: ca Li#n th;nh .i9n th Le khfi 5Wng &ac :nh sH khfi tBo gi2 tr: 7;
0 &ac :nh cho Li#n th;nh .i9n cK ki3u nguV9n. TuV nhi9nv trong trng hGC n;V Li#n th;nh
.i9n Giay Gc khfi tBo gi2 tr: )0u
Giay = 30; // Khi tao
Trong trng hGC Le khfi tBo th4 hai kh>ng truV`n gi2 tr: cho Li#n Giay n9n Li#n n;V .cn 7hV
gi2 tr: &; ta z khfi tBo Lan mu 7; )0u
ThoiGian t2 = new ThoiGian(2001, , 3, 10, 5);
t2.ThoiGianHienHanh();
XyDngLp!"#iT$%ng
TA
NgnNgLpTrnhC#
NgGc 7Biv n#u &et gi2 tr: Gc g2n cho Li#n Giay nh trong Le khfi tBo th4 nhht th gi2 tr:
&i n;V sH Gc chng 79n gi2 tr: khfi tBo.
Trong .I 56 tr9n 7mn mu ti9n tBo i tGng ThoiGian 5o ta truV`n .;o i tGng DateTime
n9n h;& khfi 5Wng th4 nhht Gc thWc hi/nv h;& n;V sH g2n gi2 tr: - cho Li#n Giay. *n khi
tBo i tGng ThoiGian th4 haiv h;& khfi 5Wng th4 hai Gc thWc hi/nv h;& n;V kh>ng g2n
gi2 tr: cho Li#n Giay n9n Li#n n;V .cn cn 7u gi? 7Bi gi2 tr: )0 khi khfi tBo Lan mu.
4H khei 2Vng sao chf-
8e khfi 5Wng sao chgC thWc hi/n .i/c tBo &et i tGng &i LYng c2ch sao chgC tht cD c2c
Li#n tJ &et i tGng z cK .; cong &et ki3u 5? 7i/u. I 56 ch$ng ta &un a &et i
tGng ThoiGian .;o Le khfi 5Wng 7C ThoiGian 3 tBo &et i tGng ThoiGian &i cK cong
gi2 tr: .i i tGng ThoiGian c. [ai i tGng n;V ho;n to;n kh2c nhau .; chb ging nhau f
gi2 tr: Li#n th;nh .i9n sao khi khfi 5Wng.
Ng>n ng? *@ kh>ng cung chC Le khfi 5Wng sao chgCv 5o K ch$ng ta ChDi tW tBo ra. i/c sao
chgC c2c th;nh Chmn tJ &et i tGng Lan mu cho &et i tGng &i nh sauu
public ThoiGian( ThoiGian tg)
{
Nam = tg.Nam;
Thang = tg.Thang;
Ngay = tg.Ngay;
Gio = tg.Gio;
Phut = tg.Phut;
Giay = tg.Giay;
}
"hi K ta cK th3 sao chgC tJ &et i tGng ThoiGian z hi/n h?u nh sauu
ThoiGian t2 = new ThoiGian( t1 );
Trong K t1 7; i tGng ThoiGian z tn tBiv sau khi 7/nh tr9n thWc hi/n Uong th i tGng
t2 Gc tBo ra nh LDn sao ca i tGng t1.
TF khGa this
TJ khKa this Gc 5ong 3 tha& chi#u #n th3 hi/n hi/n h;nh ca &et i tGng. Tha&
chi#u this n;V Gc U'& 7; con trQ Mn #n tht c2c ChFng th4c kh>ng cK thuec tInh tdnh trong
&et 7C. M\i ChFng th4c cK th3 tha& chi#u #n nh?ng ChFng th4c kh2c .; c2c Li#n th;nh
.i9n th>ng !ua tha& chi#u this n;V.
Tha& chi#u this n;V Gc sE 56ng thng UuV9n th'o La c2chu
O SE 56ng khi c2c Li#n th;nh .i9n L: ch' 7hC Lfi tha& s a .;ov nh trng hGC sauu
public void Setear( int Nam)
{
this.Nam = Nam;
XyDngLp!"#iT$%ng
TT
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
}
Nh trong oBn &z tr9n ChFng th4c Setear sH thi#t 7SC gi2 tr: ca Li#n th;nh .i9n Namv tuV
nhi9n 5o tha& s a .;o cK t9n 7; Namv trong .i Li#n th;nh .i9nv n9n ta ChDi 5ong tha&
chi#u this 3 U2c :nh r c2c Li#n th;nh .i9n .; tha& s Gc truV`n .;o. "hi K this.Nam
chb #n Li#n th;nh .i9n ca i tGngv trong khi Nam chb #n tha& s.
O SE 56ng tha& chi#u this 3 truV`n i tGng hi/n h;nh .;o &et tha& s ca &et ChFng
th4c ca i tGng kh2cu
public void Method1( OtherClass otherObject )
{
// S dng tham chiu this d truyn tham s l bn
// thn di tong dang thuc hin.
otherObject.SetObject( this );
}
Nh tr9n cho thhV khi cmn truV`n &et tha& s 7; chInh LDn thPn ca i tGng ang thWc hi/n
th ta L_t Luec ChDi 5ong tha& chi#u this 3 truV`n.
O *2c th4 La sE 56ng tha& chi#u this 7; m*ng +hZ m:+ {in5'U'r}v Chmn n;V sH Gc trnh
L;V chi ti#t trong chFng T.
S> 23ng c/c th7nh *i5n tcnh (static "#"I#r)
Nh?ng thuec tInh .; ChFng th4c trong &et 7C cK th3 7; nh?ng th;nh .i9n th3 hi/n
{instanc' &'&L'rs} haV nh?ng th;nh .i9n tdnh {static &'&L'rs}. Nh?ng th;nh .i9n th3 hi/n
haV th;nh .i9n ca i tGng 7i9n !uan #n th3 hi/n ca &et ki3u 5? 7i/u. Trong khi th;nh
.i9n tdnh Gc U'& nh &et Chmn ca 7C. *h$ng ta cK th3 truV cSC #n th;nh .i9n tdnh ca
&et 7C th>ng !ua t9n 7C z Gc khai L2o. I 56 ch$ng ta cK &et 7C t9n 7; Button .; cK
hai th3 hi/n ca 7C t9n 7; btnUpdate .; btnDelete. ; giD sE 7C Button n;V cK &et ChFng
th4c tdnh 7; Show{}. ^3 truV cSC ChFng th4c tdnh n;V ta .i#t u
Button.Show();
^$ng hFn 7; .i#tu
btnUpdate.Show();
2hi +h3u Trong ng>n ng? *@ kh>ng cho ChgC truV cSC #n c2c ChFng th4c tdnh .; c2c
Li#n th;nh .i9n tdnh th>ng !ua &et th3 hi/nv n#u ch$ng ta c 7;& i`u K th trnh Li9n 5:ch
*@ sH L2o 7\iv i`u n;V kh2c .i ng>n ng? *.
Trong &et s ng>n ng? th cK sW ChPn chia gi?a ChFng th4c ca 7C .; c2c ChFng th4c
kh2c {to;n c6c} tn tBi L9n ngo;i kh>ng Ch6 thuec Lht c4 &et 7C n;o. TuV nhi9nv i`u n;V
kh>ng cho ChgC trong *@v ng>n ng? *@ kh>ng cho ChgC tBo c2c ChFng th4c L9n ngo;i ca
7Cv nhng ta cK th3 tBo Gc c2c ChFng th4c ging nh .SV LYng c2ch tBo c2c ChFng th4c
tdnh L9n trong &et 7C.
XyDngLp!"#iT$%ng
100
ko cho phep dtuong truy
cap den phuong thuc tinh
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
1hFng th4c tdnh hoBt eng It nhi`u ging nh ChFng th4c to;n c6cv ta truV cSC ChFng
th4c n;V &; kh>ng cmn ChDi tBo Lht c4 th3 hi/n haV i tGng ca 7C ch4a ChFng th4c to;n
c6c. TuV nhi9nv 7Gi Ich ca ChFng th4c tdnh .Gt Ua ChFng th4c to;n c6c . ChFng th4c
tdnh Gc Lao LOc trong ChB& .i ca &et 7C nFi nK Gc :nh nghdav 5o .SV ta sH kh>ng gaC
tnh trBng 7en Uen gi?a c2c ChFng th4c trong t9n 5o ch$ng Gc at trong na&'sCac'.
2hi +h3u *h$ng ta kh>ng n9n L: c2& 5\ Lfi .i/c tBo ra &et 7C ch4a to;n Le c2c ChFng
th4c 7inh tinh. ^i`u n;V cK th3 ti/n cho c>ng .i/c 7SC trnh nhng sH i`u kh>ng &ong &un
.; giD& tInh ] nghda ca .i/c thi#t k# hng i tGng. ac tInh ca .i/c tBo c2c i
tGng 7; UPV 5Wng c2c ChFng th4c .; h;nh .i Uung !uanh c2c thuec tInh haV 5? 7i/u ca i
tGng.
YQi "Ht -h?ng th1c tcnh
Nh ch$ng ta z Li#t ChFng th4c Main() 7; &et ChFng th4c tdnh. 1hFng tdnh Gc
U'& nh 7; Chmn hoBt eng ca 7C hFn 7; ca th3 hi/n &et 7C. *h$ng cng kh>ng cmn cK
&et tha& chi#u this haV Lht c4 th3 hi/n n;o tha& chi#u ti.
1hFng th4c tdnh kh>ng th3 truV cSC trWc ti#C #n c2c th;nh .i9n kh>ng cK tInh chht tdnh
{nonstatic}. Nh .SV Main() kh>ng th3 gOi &et ChFng th4c kh>ng tdnh L9n trong 7C. Ta
U'& 7Bi oBn chFng trnh &inh hOa trong .I 56 N.2u
using System;
public class Class1
{
public void SomeMethod(int p1, float p2)
{
Console.WriteLine("Ham nhan duoc hai tham so: {0} va {1}, p1,p2);
}
}
public class Tester
{
static void Main()
{
int var1 = 5;
float var2 = 10.5f;
Class1 c = new Class1();
c.SomeMethod( var1, var2 );
}
}
1hFng th4c SomeMethod() 7; ChFng th4c kh>ng tdnh ca 7C Class1v 5o K 3 truV cSC
Gc ChFng th4c ca 7C n;V chn ChDi tBo &et th3 hi/n 7; &et i tGng cho 7C Class1.
XyDngLp!"#iT$%ng
101
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
Sau khi tBo th cK th3 th>ng !ua i tGng c ta cK th3 gOi Gc Gc ChFng th4c Some-
Method().
S> 23ng IH khei 2Vng tcnh
N#u &et 7C khai L2o &et Le khfi tBo tdnh {static constructor}v th Gc D& LDo rYng
ChFng th4c khfi 5Wng tdnh n;V sH Gc thWc hi/n trc Lht c4 th3 hi/n n;o ca 7C Gc tBo
ra.
2hi +h3u *h$ng ta kh>ng th3 i`u khi3n chInh U2c khi n;o th ChFng th4c khfi 5Wng tdnh
n;V Gc thWc hi/n. TuV nhi9n ta Li#t ch_c rYng nK sH Gc thWc hi/n sau khi chFng trnh
chBV .; trc Lht k Li#n i tGng n;o Gc tBo ra.
Th'o .I 56 N.N ta cK th3 th9& &et Le khfi 5Wng tdnh cho 7C ThoiGian nh sauu
static ThoiGian()
{
Ten = "Thoi gian;
}
+u ] rYng f PV kh>ng cK Lht c4 thuec tInh truV cSC n;o nh public trc Le khfi 5Wng tdnh.
Thuec tInh truV cSC kh>ng cho ChgC th'o sau &et ChFng th4c khfi 5Wng tdnh. po ChFng
th4c tdnh n9n kh>ng th3 truV cSC Lht c4 Li#n th;nh .i9n kh>ng thuec 7oBi tdnhv . .SV Li#n
th;nh .i9n Name L9n tr9n cng ChDi Gc khai L2o 7; tdnhu
private static string Ten;
*ui cong ta th9& &et 5ng .;o ChFng th4c ThoiGianHienHanh() ca 7C ThoiGianu
public void ThoiGianHienHanh()
{
System.Console.WriteLine(" Ten: {0}, Ten);
System.Console.WriteLine(" Thoi Gian:\t {0}/{1}/{2} {3}:{4}:{5},
Ngay, Thang, Nam, Gio, Phut, Giay);
}
Sau khi thaV i ta Li9n 5:ch .; chBV chFng trnh Gc k#t !uD sauu
en: hoi 1ian
hoi 1ian: 5;+;)00) 17:35:)0
Mac 5o chFng trnh thWc hi/n ttv nhng kh>ng cmn thi#t ChDi tBo ra Le khfi 5Wng tdnh 3
Ch6c .6 cho &6c Ich n;V. ThaV .;o K ta cK th3 5ong ch4c nqng khfi tBo Li#n th;nh .i9n
nh sauu
private static string Ten = "Thoi Gian;
TuV nhi9nv Le khfi tBo tdnh cK h?u 56ng khi ch$ng ta cmn c;i at &et s c>ng .i/c &; kh>ng
th3 thWc hi/n Gc th>ng !ua ch4c nqng khfi 5Wng .; c>ng .i/c c;i at n;V chb Gc thWc
hi/n 5uV nhht &et 7mn.
XyDngLp!"#iT$%ng
102
NgnNgLpTrnhC#
S> 23ng IH khei 2Vng -ri*at#
Nh z nKi ng>n ng? *@ kh>ng cK ChFng th4c to;n c6c .; hYng s to;n c6c. po .SV
ch$ng ta cK th3 tBo ra nh?ng 7C ti/n Ich nhQ chb 3 ch4a c2c ChFng th4c tdnh. *2ch thWc
hi/n n;V 7u>n cK hai &at tt .; kh>ng tt. N#u ch$ng ta tBo &et 7C ti/n Ich nh .SV .;
kh>ng &un Lht c4 &et th3 hi/n n;o Gc tBo ra. ^3 ngqn ngJa .i/c tBo Lht c4 th3 hi/n ca
7C ta tBo ra Le khfi 5Wng kh>ng cK tha& s .; kh>ng 7;& g cDv t4c 7; L9n trong thPn ca
ChFng th4c r\ngv .; th9& .;o K ChFng th4c n;V Gc 2nh 5mu 7; private. po kh>ng cK
Le khfi 5Wng publicv n9n kh>ng th3 tBo ra Lht c4 th3 hi/n n;o ca 7C.
S> 23ng c/c thuHc tEnh tcnh
Met .hn ` at ra 7; 7;& sao ki3& so2t Gc s th3 hi/n ca &et 7C Gc tBo ra khi thWc
hi/n chFng trnh. ho;n to;n ta kh>ng th3 tBo Gc Li#n to;n c6c 3 7;& c>ng .i/c #& s
th3 hi/n ca &et 7C.
Th>ng thng c2c Li#n th;nh .i9n tdnh Gc 5ong 3 #& s th3 hi/n z Gc Gc tBo ra ca
&et 7C. *2ch sE 56ng n;V Gc 2C 56ng trong &inh hOa sauu
89 d: G(Q) Sn d:ng th>Y+ t9nh tenh =i =@m sc thi hiIn(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
public class Cat
{
public Cat()
{
instance++;
}
public static void HowManyCats()
{
Console.WriteLine("{0} cats, instance);
}
private static int instance =0;
}
public class Tester
{
static void Main()
{
Cat.HowManyCats();
Cat mun = new Cat();
Cat.HowManyCats();
Cat muop = new Cat();
XyDngLp!"#iT$%ng
10)
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
Cat miu = new Cat();
Cat.HowManyCats();
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*u
0 cats
1 cats
3 cats
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
89n trong 7C Cat ta khai L2o &et Li#n th;nh .i9n tdnh t9n 7; instanc' Li#n n;V 5ong 3 #&
s th3 hi/n ca 7C Catv Li#n n;V Gc khfi tBo gi2 tr: 0. +u ] rYng Li#n th;nh .i9n tdnh Gc
U'& 7; th;nh Chmn ca 7Cv kh>ng ChDi 7; th;nh .i9n ca th3 hi/nv 5o .SV nK sH kh>ng Gc
khfi tBo Lfi trnh Li9n 5:ch khi tBo c2c th3 hi/n. "hfi tBo tng &inh 7; V9u cmu L_t Luec .i
c2c Li#n th;nh .i9n tdnh. "hi &et th3 hi/n Gc tBo ra th Le 5Wng ca 7C Cat sH thWc hi/n
tqng Li#n instanc' 79n &et Fn .:.
ZdL i t@ng
Ng>n ng? *@ cung chC +< +h@ th> dBn {garLag' co77'ction} .; 5o .SV kh>ng cmn ChDi khai
L2o tng &inh c2c ChFng th4c hV. TuV nhi9nv khi 7;& .i/c .i c2c oBn &z kh>ng Gc
!uDn 7] th cmn ChDi khai L2o tng &inh c2c ChFng th4c hV 3 giDi ChKng c2c t;i nguV9n.
*@ cung chC ngmn :nh &et ChFng th4c 3 thWc hi/n i`u khi3n c>ng .i/c n;Vv ChFng th4c
K 7; Finalize() haV cn gOi 7; Le k#t th$c. 1hFng th4c Finalize n;V sH Gc gOi Lfi cF ch#
thu 5On khi i tGng L: hV.
1hFng th4c k#t th$c chb giDi ChKng c2c t;i nguV9n &; i tGng n_& gi?v .; kh>ng tha&
chi#u #n c2c i tGng kh2c. N#u .i nh?ng oBn &z Lnh thng t4c 7; ch4a c2c tha&
chi#u ki3& so2t Gc th kh>ng cmn thi#t ChDi tBo .; thWc thi ChFng th4c Finalize(). *h$ng
ta chb 7;& i`u n;V khi UE 7] c2c t;i nguV9n kh>ng ki3& so2t Gc.
*h$ng ta kh>ng Lao gi gOi &et ChFng th4c Finalize() ca &et i tGng &et c2ch trWc
ti#Cv ngoBi trJ gOi ChFng th4c n;V ca 7C cF sf khi f L9n trong ChFng th4c Finalize() ca
ch$ng ta. Trnh thu 5On sH thWc hi/n .i/c gOi Finalize{} cho ch$ng ta.
C<c4 inali!e t4(c 4iCn
XyDngLp!"#iT$%ng
10N
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
8e thu 5On 5uV tr &et 5anh s2ch nh?ng i tGng cK ChFng
th4c Finalize. panh s2ch n;V Gc cSC nhSt &\i 7mn khi i
tGng cui cong Gc tBo ra haV L: hV.
"hi &et i tGng trong 5anh s2ch k#t th$c ca Le thu 5On Gc
chOn mu ti9n. NK sH Gc at .;o h;ng Gi {queue} cong .i
nh?ng i tGng kh2c ang ch k#t th$c. Sau khi ChFng th4c
Finalize ca i tGng thWc thi Le thu 5On sH go& 7Bi i tGng
.; cSC nhSt 7Bi 5anh s2ch h;ng Giv cng nh 7; 5anh s2ch k#t
th$c i tGng.
4H hdL cda %;
*$ Ch2C ChFng th4c hV trong ng>n ng? *@ cng ging nh trong ng>n ng? *.
Nhng .` h;nh eng c6 th3 ch$ng cK nhi`u i3& kh2c nhau. Ta khao L2o &et ChFng th4c
hV trong *@ nh sauu
Class1() {}
TuV nhi9nv trong ng>n ng? *@ th c$ Ch2C khai L2o tr9n 7; &et shortcut 7i9n k#t #n &et
ChFng th4c k#t th$c Finalize Gc k#t .i 7C cF sfv 5o .SV khi .i#t
Class1()
{
// Thuc hin mt s cng vic
}
*ng tFng tW nh .i#t u
Class1.Finalize()
{
// Thuc hin mt s cng vic
base.Finalize();
}
po sW tFng tW nh tr9n n9n khD nqng 5cn #n sW 7en Uen nhm& 7cn 7; kh>ng tr2nh khQiv n9n
ch$ng ta ChDi tr2nh .i#t c2c ChFng th4c hV .; .i#t c2c ChFng th4c Finalize tng &inh
n#u cK th3 Gc.
.h?ng th1c gis-os#
Nh ch$ng ta z Li#t th .i/c gOi &et ChFng th4c k#t th$c Finalize trong *@ 7; kh>ng
hGC 7/v . ChFng th4c n;V 5;nh cho Le thu 5On thWc hi/n. N#u ch$ng ta UE 7] c2c t;i nguV9n
kh>ng ki3& so2t nh UE 7] c2c han57' ca tSC tin .; ta &un Gc Kng haV giDi ChKng nhanh
chKng Lht c4 7$c n;ov ta cK thWc thi giao 5i/n IDisposablev Chmn chi ti#t IDisposable sH Gc
trnh L;V chi ti#t trong *hFng A. Ziao 5i/n IDisposable V9u cmu nh?ng th;nh Chmn thWc thi
ca nK :nh nghda &et ChFng th4c t9n 7; Dispose{} 3 thWc hi/n c>ng .i/c 5On 5C &; ta
V9u cmu. nghda ca ChFng th4c Dispose 7; cho ChgC chFng trnh thWc hi/n c2c c>ng .i/c
XyDngLp!"#iT$%ng
10-
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
5On 5C haV giDi ChKng t;i nguV9n &ong &un &; kh>ng ChDi ch cho #n khi ChFng th4c
Finalize() Gc gOi.
"hi ch$ng ta cung chC &et ChFng th4c Dispose th ChDi ngng Le thu 5On gOi ChFng
th4c Finalize{} trong i tGng ca ch$ng ta. ^3 ngng Le thu 5Onv ch$ng ta gOi &et ChFng
th4c tdnh ca 7C GC {garLag' co77'ctor} 7; GC.SuppressFinalize() .; truV`n tha& s 7; tha&
chi#u this ca i tGng. ; sau K ChFng th4c Finalize() sE 56ng 3 gOi ChFng th4c
Dispose{} nh oBn &z sauu
public void Dispose()
{
// Thuc hin cng vic dn dp
// u cu b thu dc GC trong thuc hin kt thc
GC.SuppressFinalize( this );
}
public override void Finalize()
{
Dispose();
base.Finalize();
}
.h?ng th1c %,os#
"hi UPV 5Wng c2c i tGngv ch$ng ta cK &un cung chC cho ngi sE 56ng ChFng th4c
Close()v . ChFng th4c Close cK . tW nhi9n hFn ChFng th4c Dispose trong c2c i tGng
cK 7i9n !uan #n UE 7] tSC tin. Ta cK th3 UPV 5Wng ChFng th4c Dispose{} .i thuec tInh 7;
private .; ChFng th4c Close() .i thuec tInh public. Trong ChFng th4c Close() Fn giDn
7; gOi thWc hi/n ChFng th4c Dispose{}.
%Pu ,+nh using
"hi UPV 5Wng c2c i tGng ch$ng ta kh>ng th3 ch_c ch_n Gc rYng ngi sE 56ng cK
th3 gOi h;& Dispose{}. ; cng kh>ng ki3& so2t Gc 7$c n;o th Le thu 5On GC thWc hi/n
.i/c 5On 5C. po K 3 cung chC khD nqng &Bnh hFn 3 ki3& so2t .i/c giDi ChKng t;i nguV9n
th *@ a ra c$ Ch2C chb 5cn @singv c$ Ch2C n;V D& LDo ChFng th4c Dispose{} sH Gc gOi
s& nhht cK th3 Gc. tfng 7; khai L2o c2c i tGng .i c$ Ch2C @sing .; sau K tBo &et
ChB& .i hoBt eng cho c2c i tGng n;V trong khi Gc Lao Lfi 5hu {}. "hi khi ChB& .i
n;V k#t th$cv th ChFng th4c Dispose{} ca i tGng sH Gc gOi &et c2ch tW eng.
89 d: G(v) Sn d:ng +hZ d~n >sing(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System.Drawing;
class Tester
{
XyDngLp!"#iT$%ng
100
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
public static void Main()
{
using ( Font Afont = new Font("Arial,10.0f))
{
// oan m s dng AFont
.......
}// Trnh bin dich s gi Dispose d gii phng AFont
Font TFont = new Font("Tahoma,12.0f);
using (TFont)
{
// oan m s dng TFont
.......
}// Trnh bin dich gi Dispose d gii phng TFont
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Trong Chmn khai L2o mu ca .I 56 th i tGng Font Gc khai L2o L9n trong cPu 7/nh
using. "hi cPu 7/nh using k#t th$cv th ChFng th4c Dispose ca i tGng Font sH Gc
gOi.
*n trong Chmn khai L2o th4 haiv &et i tGng Font Gc tBo L9n ngo;i cPu 7/nh using. "hi
!uV#t :nh 5ong i tGng n;V ta at nK .;o cPu 7/nh using. ; cng tFng tW nh tr9n khi
khi cPu 7/nh using thWc hi/n Uong th ChFng th4c Dispose{} ca font Gc gOi.
TruLCn tha" s
Nh z thDo 7uSn trong chFng trcv tha& s cK ki3u 5? 7i/u 7; gi2 tr: th sH Gc truV`n
gi2 tr: .;o cho ChFng th4c. ^i`u n;V cK nghda rYng khi &et i tGng cK ki3u 7; gi2 tr: Gc
truV`n .;o cho &et ChFng th4cv th cK &et LDn sao chgC i tGng K Gc tBo ra L9n trong
ChFng th4c. Met khi ChFng th4c Gc thWc hi/n Uong th i tGng sao chgC n;V sH Gc
hV. TuV nhi9nv PV chb 7; trng hGC Lnh thngv ng>n ng? *@ cn cung chC khD nqng cho
ChgC ta truV`n c2c i tGng cK ki3u gi2 tr: 5i hnh th4c 7; tha& chi#u. Ng>n ng? *@ a ra
&et L sung tha& s 7; ref cho ChgC truV`n c2c i tGng gi2 tr: .;o trong ChFng th4c th'o
ki3u tha& chi#u. ; tha& s L sung out trong trng hGC &un truV`n 5i 5Bng tha&
chi#u &; kh>ng cmn ChDi khfi tBo gi2 tr: Lan mu cho tha& s truV`n. Ngo;i ra ng>n ng? *@
cn h\ trG L sung params cho ChgC ChFng th4c chhC nhSn nhi`u s 7Gng c2c tha& s.
TruLCn tha" chiu
Nh?ng ChFng th4c chb cK th3 trD .` 5uV nhht &et gi2 tr:v &ac 5o gi2 tr: n;V cK th3 7; &et
tSC hGC c2c gi2 tr:. N#u ch$ng ta &un ChFng th4c trD .` nhi`u hFn &et gi2 tr: th c2ch thWc
hi/n 7; tBo c2c tha& s 5i hnh th4c tha& chi#u. "hi K trong ChFng th4c ta sH UE 7] .;
XyDngLp!"#iT$%ng
10=
NgnNgLpTrnhC#
g2n c2c gi2 tr: &i cho c2c tha& s tha& chi#u n;Vv k#t !uD 7; sau khi ChFng th4c thWc hi/n
Uong ta 5ong c2c tha& s truV`n .;o nh 7; c2c k#t !uD trD .`. I 56 N.= sau &inh hOa .i/c
truV`n tha& s tha& chi#u cho ChFng th4c.
89 d: G(w) 0r* gi, trM tr* ND thng A>a tham sc(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
public class Time
{
public void DisplayCurrentTime()
{
Console.WriteLine("{0}/{1}/{2}/ {3}:{4}:{5}, Date,
Month, ear, Hour, Minute, Second);
}
public int GetHour()
{
return Hour;
}
public void GetTime(int h, int m, int s)
{
h = Hour;
m = Minute;
s = Second;
}
public Time( System.DateTime dt)
{
ear = dt.ear;
Month = dt.Month;
Date = dt.Day;
Hour = dt.Hour;
Minute = dt.Minute;
Second = dt.Second;
}
private int ear;
private int Month;
private int Date;
private int Hour;
private int Minute;
private int Second;
XyDngLp!"#iT$%ng
10A
NgnNgLpTrnhC#
}
public class Tester
{
static void Main()
{
System.DateTime currentTime = System.DateTime.Now;
Time t = new Time( currentTime);
t.DisplayCurrentTime();
int theHour = 0;
int theMinute = 0;
int theSecond = 0;
t.GetTime( theHour, theMinute, theSecond);
System.Console.WriteLine("Current time: {0}:{1}:{2},
theHour, theMinute, theSecond);
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*u
7;+;)00) 1*:15:)0
Current ti#e: 0:0:0
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Nh ta thhVv k#t !uD Uuht ra f 5ng cui cong 7; La gi2 tr: 0:0:0v r r;ng ChFng th4c
GetTime() kh>ng thWc hi/n nh &ong &un 7; g2n gi2 tr: Hourv Minutev Second cho c2c
tha& s truV`n .;o. T4c 7; La tha& s n;V Gc truV`n .;o 5i 5Bng gi2 tr:. po K 3 thWc
hi/n nh &6c Ich ca ch$ng ta 7; 7hV c2c gi2 tr: ca Hourv Minutev Second th ChFng th4c
GetTime() cK La tha& s Gc truV`n 5i 5Bng tha& chi#u. Ta thWc hi/n nh sauv mu ti9nv
th9& 7; th9& khai L2o ref .;o trc c2c tha& s trong ChFng th4c GetTime()u
public void GetTime( ref int h, ref int m, ref int s)
{
h = Hour;
m = Minute;
s = Second;
}
^i`u thaV i th4 hai 7; L sung c2ch gOi h;& GetTime 3 truV`n c2c tha& s 5i 5Bng tha&
chi#u nh sauu
t.GetTime( ref theHour, ref theMinute, ref theSecond);
N#u ch$ng ta kh>ng thWc hi/n Lc th4 haiv t4c 7; kh>ng a tJ khKa ref khi gOi h;& th
trnh Li9n 5:ch *@ sH L2o &et 7\i rYng kh>ng th3 chuV3n tha& s tJ ki3u int sang ki3u ref int.
XyDngLp!"#iT$%ng
10T
NgnNgLpTrnhC#
*ui cong khi Li9n 5:ch 7Bi chFng trnh ta Gc k#t !uD $ng nh V9u cmu. 8Yng .i/c khai
L2o tha& s tha& chi#uv trnh Li9n 5:ch sH truV`n c2c tha& s 5i 5Bng c2c tha& chi#uv thaV
cho .i/c tBo ra &et LDn sao chgC c2c tha& s n;V. "hi K c2c tha& s L9n trong GetTime() sH
tha& chi#u #n cong Li#n z Gc khai L2o trong h;& Main(). Nh .SV &Oi sW thaV i .i
c2c Li#n n;V i`u cK hi/u 7Wc tFng tW nh 7; thaV i trong h;& Main().
TK& 7Bi cF ch# truV`n tha& s 5Bng tha& chi#u sH thWc hi/n tr9n chInh i tGng Gc a
.;o. *n cF ch# truV`n tha& s gi2 tr: th sH tBo ra c2c LDn sao c2c i tGng Gc truV`n .;ov
5o K &Oi thaV i L9n trong ChFng th4c kh>ng 7;& Dnh hfng #n c2c i tGng Gc
truV`n .;o 5i 5Bng gi2 tr:.
TruLCn tha" chiu *i Iin cha khei t<o
Ng>n ng? *@ L_t Luec ChDi thWc hi/n &et ChgC g2n cho Li#n trc khi sE 56ngv 5o K khi
khai L2o &et Li#n nh ki3u cF LDn th trc khi cK 7/nh n;o sE 56ng c2c Li#n n;V th ChDi cK
7/nh thWc hi/n .i/c g2n gi2 tr: U2c :nh cho Li#n. Nh trong .I 56 N.= tr9nv n#u ch$ng ta
kh>ng khfi tBo Li#n theHourv theMinutev .; Li#n theSecond trc khi truV`n nh tha& s
.;o ChFng th4c GetTime() th trnh Li9n 5:ch sH L2o 7\i. N#u ch$ng ta sEa 7Bi oBn &z ca
.I 56 N.= nh sauu
int theHour;
int theMinute;
int theSecond;
t.GetTime( ref int theHour, ref int theMinute, ref int theSecond);
i/c sE 56ng c2c oBn 7/nh tr9n kh>ng ChDi ho;n to;n .> 7] . &6c Ich ca ch$ng ta 7; nhSn
c2c gi2 tr: ca i tGng Timev .i/c khfi tBo gi2 tr: ca c2c Li#n a .;o 7; kh>ng cmn thi#t.
TuV nhi9n khi Li9n 5:ch .i oBn &z 7/nh nh tr9n sH Gc L2o c2c 7\i sauu
Use of unassigned local variable `theHour
Use of unassigned local variable `theMinute
Use of unassigned local variable `theSecond
^3 &f reng cho V9u cmu trong trng hGC n;V ng>n ng? *@ cung chC th9& &et L sung tha&
chi#u 7; o@t. "hi sE 56ng tha& chi#u out th V9u cmu L_t Luec ChDi khfi tBo c2c tha& s
tha& chi#u Gc LQ !ua. Nh c2c tha& s trong ChFng th4c GetTime()v c2c tha& s n;V
kh>ng cung chC Lht c4 th>ng tin n;o cho ChFng th4c &; chb Fn giDn 7; cF ch# nhSn th>ng
tin .; a ra L9n ngo;i. po .SV ta cK th3 2nh 5hu tht cD c2c tha& s tha& chi#u n;V 7; outv
khi K ta sH giD& Gc c>ng .i/c ChDi khfi tBo c2c Li#n n;V trc khi a .;o ChFng th4c.
+u ] 7; L9n trong ChFng th4c cK c2c tha& s tha& chi#u out th c2c tha& s n;V ChDi Gc
g2n gi2 tr: trc khi trD .`. Ta cK &et s thaV i cho ChFng th4c GetTime() nh sauu
public void GetTime( out int h, out int m, out int s)
{
h = Hour;
XyDngLp!"#iT$%ng
110
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
m = Minute;
s = Second;
}
.; c2ch gOi &i ChFng th4c GetTime() trong Main()u
t.GetTime( out theHour, out theMinute, out theSecond);
TK& 7Bi ta cK c2c c2ch khai L2o c2c tha& s trong &et ChFng th4c nh sauu ki3u 5? 7i/u gi2
tr: Gc truV`n .;o ChFng th4c LYng gi2 tr:. SE 56ng tha& chi#u ref 3 truV`n ki3u 5? 7i/u
gi2 tr: .;o ChFng th4c 5i 5Bng tha& chi#uv c2ch n;V cho ChgC .Ja sE 56ng .; cK khD nqng
thaV i c2c tha& s L9n trong ChFng th4c Gc gOi. Tha& chi#u out Gc sE 56ng chb 3
trD .` gi2 tr: tJ &et ChFng th4c. I 56 N.A sau sE 56ng La ki3u tha& s tr9n.
89 d: G(x) Sn d:ng tham sc(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
public class Time
{
public void DisplayCurrentTime()
{
Console.WriteLine("{0}/{1}/{2} {3}:{4}:{5},
Date, Month, ear, Hour, Minute, Second);
}
public int GetHour()
{
return Hour;
}
public void SetTime(int hr, out int min, ref int sec)
{
// Nu s giy truyn vo >30 th tng s Minute v Second = 0
if ( sec >=30 )
{
Minute++;
Second = 0;
}
Hour = hr; // thit lp gi tri hr doc truyn vo
// Tr v gi tri mi cho min v sec
min = Minute;
sec = Second;
}
public Time( System.DateTime dt)
XyDngLp!"#iT$%ng
111
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
{
ear = dt.ear;
Month = dt.Month;
Date = dt.Day;
Hour = dt.Hour;
Minute = dt.Minute;
Second = dt.Second;
}
// bin thnh vin private
private int ear;
private int Month;
private int Date;
private int Hour;
private int Minute;
private int Second;
}
public class Tester
{
static void Main()
{
System.DateTime currentTime = System.DateTime.Now;
Time t = new Time(currentTime);
t.DisplayCurrentTime();
int theHour = 3;
int theMinute;
int theSecond = 20;
t.SetTime( theHour, out theMinute, ref theSecond);
Console.WriteLine("The Minute is now: {0} and {1} seconds ,
theMinute, theSecond);
theSecond = 45;
t.SetTime( theHour, out theMinute, ref theSecond);
Console.WriteLine("The Minute is now: {0} and {1} seconds,
theMinute, theSecond);
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*u
7;+;)00) 15:35:)*
XyDngLp!"#iT$%ng
112
NgnNgLpTrnhC#
he Minute is now: 35 and )* seconds
he Minute is now: 3+ and 0 seconds
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
1hFng th4c SetTime tr9n z &inh hOa .i/c sE 56ng La ki3u truV`n tha& s .;o &et ChFng
th4c. Tha& s th4 nhht theHour Gc truV`n .;o 5Bng gi2 tr:v &6c Ich ca tha& s n;V 7; 3
thi#t 7SC gi2 tr: cho Li#n th;nh .i9n Hour .; tha& s n;V kh>ng Gc sE 56ng 3 .` Lht c4 gi2
tr: n;o.
Tha& s th4 hai 7; theMinute Gc truV`n .;o ChFng th4c chb 3 nhSn gi2 tr: trD .` ca Li#n
th;nh .i9n Minutev 5o K tha& s n;V Gc khai L2o .i tJ khKa out.
*ui cong tha& s theSecond Gc truV`n .;o .i khai L2o refv Li#n tha& s n;V .Ja 5ong
3 thi#t 7SC gi2 tr: trong ChFng th4c. N#u theSecond 7n hFn )0 th gi2 tr: ca Li#n th;nh
.i9n Minute tqng th9& &et Fn .: .; Li#n th;nh .i9n Second Gc thi#t 7SC .` 0. Sau cong
th theSecond Gc g2n gi2 tr: ca Li#n th;nh .i9n Second .; Gc trD .`.
po hai Li#n theHour .; theSecond Gc sE 56ng trong ChFng th4c SetTime n9n ChDi Gc
khfi tBo trc khi truV`n .;o ChFng th4c. *n .i Li#n theMinute th kh>ng cmn thi#t . nK
kh>ng Gc sE 56ng trong ChFng th4c &; chb nhSn gi2 tr: trD .`.
N<- chng -h?ng th1c
Th>ng thng khi UPV 5Wng c2c 7Cv ta cK &ong &un 7; tBo ra nhi`u h;& cK cong t9n. *ng
nh hmu h#t trong c2c .I 56 trc th c2c 7C i`u cK nhi`u hFn &et ChFng th4c khfi 5Wng.
Nh trong 7C Time cK c2c ChFng th4c khfi 5Wng nhSn c2c tha& s kh2c nhauv nh tha& s
7; i tGng DateTimev haV tha& s cK th3 Gc toV chOn 3 thi#t 7SC c2c gi2 tr: ca c2c Li#n
th;nh .i9n th>ng !ua c2c tha& s nguV9n. TK& 7Bi ta cK th3 UPV 5Wng nhi`u c2c ChFng th4c
cong t9n nhng nhSn c2c tha& s kh2c nhau. *h4c nqng n;V Gc gOi 7; nBC chng ChFng
th4c.
Met k] hi/u {signatur'} ca &et ChFng th4c Gc :nh nghda nh t9n ca ChFng th4c cong
.i 5anh s2ch tha& s ca ChFng th4c. [ai ChFng th4c kh2c nhau khi k] hi/u ca ch$ng
kh2c 7; kh2c nhau t4c 7; kh2c nhau khi t9n ChFng th4c kh2c nhau haV 5anh s2ch tha& s
kh2c nhau. panh s2ch tha& s Gc U'& 7; kh2c nhau Lfi s 7Gng c2c tha& s hoac 7; ki3u
5? 7i/u ca tha& s. I 56 oBn &z sauv ChFng th4c th4 nhht kh2c ChFng th4c th4 hai 5o
s 7Gng tha& s kh2c nhau. 1hFng th4c th4 hai kh2c ChFng th4c th4 La 5o ki3u 5? 7i/u
tha& s kh2c nhauu
void myMethod( int p1 );
void myMethod( int p1, int p2 );
void myMethod( int p1, string p2 );
Met 7C cK th3 cK Lht c4 s 7Gng ChFng th4c n;ov nhng &\i ChFng th4c trong 7C ChDi
cK k] hi/u kh2c .i tht cD c2c ChFng th4c th;nh .i9n cn 7Bi ca 7C.
XyDngLp!"#iT$%ng
11)
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
I 56 N.T &inh hOa 7C Time cK hai ChFng th4c khfi 5Wngv &et ChFng th4c nhSn tha& s
7; &et i tGng DateTime cn ChFng th4c th4 hai th nhSn s2u tha& s nguV9n.
89 d: G(y) Minh hBa nLp +hKng ph;<ng thP+ 1hgi dOng(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
public class Time
{
public void DisplayCurrentTime()
{
Console.WriteLine("{0}/{1}/{2} {3}:{4}:{5},
Date, Month, ear, Hour, Minute, Second);
}
public Time( System.DateTime dt)
{
ear = dt.ear;
Month = dt.Month;
Date = dt.Day;
Hour = dt.Hour;
Minute = dt.Minute;
Second = dt.Second;
}
public Time(int ear, int Month, int Date, int Hour, int Minute, int Second)
{
this.ear = ear;
this.Month = Month;
this.Date = Date;
this.Hour = Hour;
this.Minute = Minute;
this.Second = Second;
}
// Bin thnh vin private
private int ear;
private int Month;
private int Date;
private int Hour;
private int Minute;
private int Second;
}
XyDngLp!"#iT$%ng
11N
NgnNgLpTrnhC#
public class Tester
{
static void Main()
{
System.DateTime currentTime = System.DateTime.Now;
Time t1 = new Time( currentTime);
t1.DisplayCurrentTime();
Time t2 = new Time(2002,6,8,18,15,20);
t2.DisplayCurrentTime();
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*u
);1;)00) 16:50:16
7;+;)00) 17:15:)0
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Nh ch$ng ta thhVv 7C Time trong .I 56 &inh hOa N.T cK hai ChFng th4c khfi 5Wng. N#u hai
ChFng th4c cK cong k] hi/u th trnh Li9n 5:ch sH kh>ng th3 Li#t Gc gOi ChFng th4c n;o
khi khfi tBo hai i tGng 7; t1 .; t2. TuV nhi9nv k] hi/u ca hai ChFng th4c n;V kh2c nhau
. tha& s truV`n .;o kh2c nhauv 5o K trnh Li9n 5:ch sH U2c :nh Gc ChFng th4c n;o
Gc gOi 5Wa .;o c2c tha& s.
"hi thWc hi/n nBC chng &et ChFng th4cv L_t Luec ch$ng ta ChDi thaV i k] hi/u ca
ChFng th4cv s tha& sv haV ki3u 5? 7i/u ca tha& s. *h$ng ta cng cK th3 to;n !uV`n thaV
i gi2 tr: trD .`v nhng PV 7; toV chOn. N#u chb thaV i gi2 tr: trD .` th kh>ng ChDi nBC
chng ChFng th4c &; khi K hai ChFng th4c kh2c nhauv .; n#u tBo ra hai ChFng th4c
cong k] hi/u nhng kh2c nhau ki3u gi2 tr: trD .` sH tBo ra &et 7\i Li9n 5:ch.
89 d: G(1$) NLp +hKng ph;<ng thP+(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
public class Tester
{
private int Triple( int val)
{
return 3*val;
}
private long Triple(long val)
{
return 3*val;
XyDngLp!"#iT$%ng
11-
NgnNgLpTrnhC#
}
public void Test()
{
int x = 5;
int y = Triple(x);
Console.WriteLine("x: {0} y: {1}, x, y);
long lx = 10;
long ly = Triple(lx);
Console.WriteLine("lx: {0} ly:{1}, lx, ly);
}
static void Main()
{
Tester t = new Tester();
t.Test();
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*u
(: 5 ': 15
!(: 10 !':30
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Trong .I 56 n;Vv 7C Tester nBC chng hai ChFng th4c Triple{}v &et ChFng th4c nhSn tha&
s nguV9n intv ChFng th4c cn 7Bi nhSn tha& s 7; s nguV9n long. "i3u gi2 tr: trD .` ca hai
ChFng th4c kh2c nhauv &ac 5o i`u n;V kh>ng i hQi nhng rht thIch hGC trong trng hGC
n;V.
]Gng gGi 2: ,i+u *i th7nh -hhn thuHc tEnh
Thuec tInh 7; kh2i ni/& cho ChgC truV cSC trBng th2i ca 7C thaV . th>ng !ua truV cSC
trWc ti#C c2c Li#n th;nh .i9nv nK sH WFc thaV th# LYng .i/c thWc thi truV cSC th>ng !ua
ChFng th4c ca 7C.
^PV thSt sW 7; &et i`u 7] tfng. *2c th;nh Chmn L9n ngo;i {c7i'nt} &un truV cSC trBng
th2i ca &et i tGng .; kh>ng &un 7;& .i/c .i nh?ng ChFng th4c. TuV nhi9nv ngi
thi#t k# 7C &un 5hu trBng th2i L9n trong ca 7C &; anh ta UPV 5Wngv .; cung chC &et c2ch
gi2n ti#C th>ng !ua &et ChFng th4c.
Thuec tInh 7; &et ac tInh &i Gc gii thi/u trong ng>n ng? *@. ^ac tInh n;V cung chC
khD nqng LDo ./ c2c trng 5? 7i/u L9n trong &et 7C LYng .i/c Oc .; .i#t ch$ng th>ng !ua
thuec tInh. Trong ng>n ng? kh2cv i`u n;V cK th3 Gc thWc hi/n th>ng !ua .i/c tBo c2c
ChFng th4c 7hV 5? 7i/u {g'tt'r &'tho5} .; ChFng th4c thi#t 7SC 5? 7i/u {s'tt'r &'tho5}.
XyDngLp!"#iT$%ng
110
NgnNgLpTrnhC#
Thuec tInh Gc thi#t k# nh_& .;o hai &6c Ichu cung chC &et giao 5i/n Fn cho ChgC
truV cSC c2c Li#n th;nh .i9nv TuV nhi9n c2ch th4c thWc thi truV cSC ging nh ChFng th4c
trong K c2c 5? 7i/u Gc ch' 5huv D& LDo cho V9u cmu thi#t k# hng i tGng. ^3 hi3u r
ac tInh n;V ta sH U'& .I 56 N.11 L9n 5iu
89 d: G(11) Sn d:ng th>Y+ t9nh(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
public class Time
{
public void DisplayCurrentTime()
{
Console.WriteLine("Time\t: {0}/{1}/{2} {3}:{4}:{5},
date, month, year, hour, minute, second);
}
public Time( System.DateTime dt)
{
year = dt.ear;
month = dt.Month;
date = dt.Day;
hour = dt.Hour;
minute = dt.Minute;
second = dt.Second;
}
public int Hour
{
get
{
return hour;
}
set
{
hour = value;
}
}
// Bin thnh vin private
private int year;
private int month;
private int date;
XyDngLp!"#iT$%ng
11=
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
private int hour;
private int minute;
private int second;
}
public class Tester
{
static void Main()
{
System.DateTime currentTime = System.DateTime.Now;
Time t = new Time( currentTime );
t.DisplayCurrentTime();
// Ly d liu t thuc tnh Hour
int theHour = t.Hour;
Console.WriteLine(" Retrieved the hour: {0}, theHour);
theHour++;
t.Hour = theHour;
Console.WriteLine("Updated the hour: {0}, theHour);
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*u
i#e : );1;)003 16:55:1
<etrie$ed the hour: 16
=&dated the hour: 17
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
^3 khai L2o thuec tInhv mu ti9n 7; khai L2o t9n thuec tInh 3 truV cSCv ti#C th'o 7; Chmn thPn
:nh nghda thuec tInh nY& trong cSC 5hu {}. 89n trong thPn ca thuec tInh 7; khai L2o hai
Le truV cSC 7hV .; thi#t 7SC 5? 7i/uu
public int Hour
{
get
{
return hour;
}
set
{
hour = value;
}
XyDngLp!"#iT$%ng
11A
NgnNgLpTrnhC#
}
M\i Le truV cSC Gc khai L2o ri9ng Li/t 3 7;& hai c>ng .i/c kh2c nhau 7; 7hV haV thi#t 7SC
gi2 tr: cho thuec tInh. Zi2 tr: thuec tInh cK th3 Gc 7u trong cF sf 5? 7i/uv khi K trong Chmn
thPn ca Le truV cSC sH thWc hi/n c2c c>ng .i/c tFng t2c .i cF sf 5? 7:9u. [oac 7; gi2 tr:
thuec tInh Gc 7u tr? trong c2c Li#n th;nh .i9n ca 7C nh trong .I 56u
private int hour;
TruL cT- ,iL 2: ,i+u (g#t acc#ssor)
1hmn khai L2o tFng tW nh &et ChFng th4c ca 7C 5ong 3 trD .` &et i tGng cK
ki3u 5? 7i/u ca thuec tInh. Trong .I 56 tr9nv Le truV cSC 7hV 5? 7i/u g't ca thuec tInh Hour
cng tFng tW nh &et ChFng th4c trD .` &et gi2 tr: int. NK trD .` gi2 tr: ca Li#n th;nh
.i9n hour nFi &; gi2 tr: ca thuec tInh Hour 7u tr?u
get
{
return hour;
}
Trong .I 56 n;Vv &et Li#n th;nh .i9n c6c Le Gc trD .`v nhng nK cng cK th3 truV cSC 5
5;ng &et gi2 tr: nguV9n tJ cF sf 5? 7:9uv haV thWc hi/n .i/c tInh to2n toV ].
8ht c4 khi n;o ch$ng ta tha& chi#u #n &et thuec tInh haV 7; g2n gi2 tr: thuec tInh cho &et
Li#n th Le truV cSC 7hV 5? 7i/u get sH Gc thWc hi/n 3 Oc gi2 tr: ca thuec tInhu
Time t = new Time( currentTime );
int theHour = t.Hour;
"hi 7/nh th4 hai Gc thWc hi/n th gi2 tr: ca thuec tInh sH Gc trD .`v t4c 7; Le truV cSC 7hV
5? 7:9u get sH Gc thWc hi/n .; k#t !uD 7; gi2 tr: ca thuec tInh Gc g2n cho Li#n c6c Le
theHour.
4H truL cT- thit ,T- 2: ,i+u ( s#t acc#ssor)
8e truV cSC n;V sH thi#t 7SC &et gi2 tr: &i cho thuec tInh .; tFng tW nh &et ChFng
th4c trD .` &et gi2 tr: void. "hi :nh nghda Le truV cSC thi#t 7SC 5? 7:9u ch$ng ta ChDi sE 56ng
tJ khKa H6)@[ 3 Bi 5i/n cho tha& s Gc truV`n .;o .; Gc 7u tr? Lfi thuec tInhu
set
{
hour = value;
}
Nh z nKi trcv 5o ta ang khai L2o thuec tInh 7u tr? 5i 5Bng Li#n th;nh .i9n n9n trong
Chmn thPn ca Le truV cSC ta chb sE 56ng Li#n th;nh .i9n &; th>i. 8e truV cSC thi#t 7SC ho;n
to;n cho ChgC ch$ng ta cK th3 .i#t gi2 tr: .;o trong cF sf 5? 7:9u haV cSC nhSt Lht c4 Li#n
th;nh .i9n n;o kh2c ca 7C n#u cmn thi#t.
XyDngLp!"#iT$%ng
11T
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
"hi ch$ng ta g2n &et gi2 tr: cho thuec tInh th Le truV cSC thi#t 7SC 5? 7i/u set sH Gc tW
eng thWc hi/n .; &et tha& s ngm& :nh sH Gc tBo ra 3 7u gi2 tr: &; ta &un g2nu
theHour++;
t.Hour = theHour;
+Gi Ich ca hng ti#C cSn n;V cho ChgC c2c th;nh Chmn L9n ngo;i {c7i'nt} cK th3 tFng t2c
.i thuec tInh &et c2ch trWc ti#Cv &; kh>ng ChDi hV sinh .i/c ch' 5hu 5? 7:9u cng nh ac
tInh Kng gKi 5? 7:9u trong thi#t k# hng i tGng.
ThuHc tEnh cha Qc
ZiD sE ch$ng ta &un tBo &et Chi9n LDn kh2c cho 7C Time cung chC &et s gi2 tr: static
3 hi3n th: ng;V .; gi hi/n h;nh. I 56 N.12 &inh hOa cho c2ch ti#C cSn n;V.
89 d: G(12) Sn d:ng th>Y+ t9nh hbng stati+(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
public class RightNow
{
// inh ngha b khi tao static cho cc bin static
static RightNow()
{
System.DateTime dt = System.DateTime.Now;
ear = dt.ear;
Month = dt.Month;
Date = dt.Day;
Hour = dt.Hour;
Minute = dt.Minute;
Second = dt.Second;
}
// Bin thnh vin static
public static int ear;
public static int Month;
public static int Date;
public static int Hour;
public static int Minute;
public static int Second;
}
public class Tester
{
static void Main()
XyDngLp!"#iT$%ng
120
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
{
Console.WriteLine("This year: {0},
RightNow.ear.ToString());
RightNow.ear = 2003;
Console.WriteLine("This year: {0},
RightNow.ear.ToString());
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
his 'ear: )00)
his 'ear: )003
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
^oBn chFng trnh tr9n hoBt eng ttv tuV nhi9n cho #n khi cK &et ai K thaV i gi2 tr: ca
Li#n th;nh .i9n n;V. Nh ta thhVv Li#n th;nh ear tr9n z Gc thaV i #n 200). ^i`u n;V
thWc sW kh>ng nh &ong &un ca ch$ng ta.
*h$ng ta &un 2nh 5hu c2c thuec tInh tdnh n;V kh>ng Gc thaV i. Nhng khai L2o hYng
cng kh>ng Gc . Li#n tdnh kh>ng Gc khfi tBo cho #n khi ChFng th4c khfi 5Wng static
Gc thi h;nh. po .SV *@ cung chC th9& tJ khKa r[6'on)& Ch6c .6 chInh U2c cho &6c ich
tr9n. i .I 56 tr9n ta cK c2ch khai L2o 7Bi nh sauu
public static readonly int ear;
public static readonly int Month;
public static readonly int Date;
public static readonly int Hour;
public static readonly int Minute;
public static readonly int Second;
"hi K ta ChDi LQ 7/nh g2n Li#n th;nh .i9n earv . n#u kh>ng sH L: L2o 7\iu
// RightNow.ear = 2003; // error
*hFng trnh sau khi Li9n 5:ch .; thWc hi/n nh &6c Ich ca ch$ng ta.
%Pu hSi *7 tr= ,i
CU> hVi 1u *K ChDi ch$ng ta chb n9n sE 56ng 7C .i c2c 5? 7i/u th;nh .i9n
0r* #Wi 1) N6i +h>ng #- +h3ng ta 1hng n%n sn d:ng #op +hZ Noi d #iI> th-nh Ni%n( nghea
+7a mt #op hay +7a #p trnh h;ong =ci t;Hng #- 1h* njng =6ng g6i +,+ +hP+ njng N- d
#iI> N-o trong mYt g6i =<n(
CU> hVi 2u *K ChDi tht cD nh?ng 5? 7i/u th;nh .i9n 7u>n 7u>n Gc khai L2o 7; public 3 L9n
ngo;i cK th3 truV cSC ch$ng
XyDngLp!"#iT$%ng
121
NgnNgLpTrnhC#
0r* #Wi 2) N6i +h>ng #- 1hng( Do NXn =D +h' dX> d #iI> trong #p trnh h;ong =ci t;Hngf
_> h;ong #- d #iI> %n trong +hZ n%n dCng +ho +,+ ph;<ng thP+ th-nh Ni%n( 0>y nhi%nf nh;
+h3ng ta =J i@t 1h,i niIm th>Y+ t9nh +ho phqp +,+ i@n th-nh Ni%n =;H+ tr>y +p t5 %n
ngo-i thng A>a hnh thP+ nh; #- ph;<ng thP+(
CU> hVi Fu *K ChDi cK rht nhi`u 7C Gc UPV 5Wng sXn .; t>i cK th3 t& ch$ng f Pu
0r* #Wi F) Mi+rosoTt +>ng +Xp rXt nhiD> +,+ #op gBi #- +,+ #op +< sg (N/0( Nhng #op n-y
=;H+ tk +hP+ %n trong +,+ nam'spa+'( Ch3ng ta +6 thi tm t-i #iI> ND +,+ #op n-y trong th;
NiIn trO+ t>y@n +7a Mi+rosoTt( 8- mYt sc #op th;Wng sn d:ng +mng =;H+ trnh -y #.n #;Ht
trong +,+ N9 d: +7a gi,o trnh n-y(
CU> hVi Gu SW kh2c nhau gi?a tha& s {Cara&'t'r} .; i &6c {argu&'nt}
0r* #Wi G) 0ham sc =;H+ =Mnh nghea #- nhng thP =;H+ tr>yDn N-o trong mYt ph;<ng thP+(
MYt tham sc _>Xt hiIn Noi =Mnh nghea +7a ph;<ng thP+ g =.> ph;<ng thP+( MYt =ci m:+ #-
gi, trM =;H+ tr>yDn N-o ph;<ng thP+( Ch3ng ta tr>yDn nhng =ci m:+ N-o ph;<ng thP+ phC
hHp Noi nhng tham sc =J 1hai ,o +7a ph;<ng thP+(
CU> hVi Qu *h$ng ta cK th3 tBo ChFng th4c L9n ngo;i ca 7C haV kh>ng
0r* #Wi Q) M^+ dC trong nhng ngn ng 1h,+f +h3ng ta +6 thi tLo +,+ ph;<ng thP+ %n
ngo-i +7a #op( Nh;ng trong C# th 1hngf C# #- h;ong =ci t;Hngf do Ny tXt +* +,+ mJ
ng>Kn ph*i =;H+ =^t %n trong mYt #op(
CU> hVi vu *K ChDi nh?ng ChFng th4c .; 7C trong *@ hoBt eng tFng tW nh trong c2c
ng>n ng? kh2c nh * haV wa.a
0r* #Wi v) 0rong h.> h@t +,+ ph.n th +h3ng t;<ng tO nh; nha>( 0>y nhi%nf mai ngn ng
+mng +6 nhng 1h,+ iIt ri%ng( MYt N9 d: sO 1h,+ nha> #- C# 1hng +ho phqp tham sc m^+
=Mnh %n trong mYt ph;<ng thP+( 0rong ngn ng C{{ th +h3ng ta +6 thi 1hai ,o +,+
tham sc m^+ =Mnh #3+ =Mnh nghea ph;<ng thP+ N- 1hi gBi ph;<ng thP+ th +6 thi 1hng +.n
tr>yDn gi, trM N-of ph;<ng thP+ s` dCng gi, trM m^+ =Mnh( 0rong C# th 1hng =;H+ phqp( N6i
+h>ng #- +En nhiD> sO 1h,+ nha> naf nh;ng _in d-nh +ho Ln =B+ tO tm hii>(
CU> hVi wu 1hFng th4c tdnh cK th3 truV cSC Gc th;nh .i9n n;o .; kh>ng truV cSC Gc
th;nh .i9n n;o trong &et 7C
0r* #Wi w) Ph;<ng thP+ tenh +hZ tr>y +p =;H+ +,+ th-nh Ni%n tenh trong mYt #op(
%Pu hSi th5"
CU> hVi 1) SO 1h,+ nha> gia th-nh Ni%n =;H+ 1hai ,o #- p>#i+ N- +,+ th-nh Ni%n 1hng
=;H+ 1hai ,o #- p>#i+u
CU> hVi 2) 05 1ho, n-o =;H+ sn d:ng trong NiI+ thO+ thi th>Y+ t9nh +7a #opu
CU> hVi F) Nhng 1ii> d #iI> n-o =;H+ tr* ND t5 ph;<ng thP+u
CU> hVi G) SO 1h,+ nha> gia tr>yDn i@n tham +hi@> N- tr>yDn i@n tham trM N-o mYt
ph;<ng thP+u
CU> hVi Q) L-m sao tr>yDn tham +hi@> Noi i@n 1ii> gi, trM N-o trong mYt ph;<ng thP+u
XyDngLp!"#iT$%ng
122
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
CU> hVi v) ?hi n-o th ph;<ng thP+ 1hgi dOng =;H+ gBiu
CU> hVi w) Ph;<ng thP+ 1hgi dOng tenh =;H+ gBi 1hi n-ou
CU> hVi x) C6 thi tr>yDn i@n +h;a 1hgi tLo N-o mYt h-m =;H+ 1hngu
CU> hVi y) SO 1h,+ nha> gia mYt #op N- mYt =ci t;Hng +7a #opu
CU> hVi 1$) 0h-nh Ni%n n-o trong mYt #op +6 thi =;H+ tr>y +p m- 1hng ph*i tLo thi hiIn
+7a #opu
CU> hVi 11) Lop m- +h3ng ta _Uy dOng th>Y+ 1ii> d #iI> n-ou
CU> hVi 12) 05 1h6a this =;H+ dCng #-m g trong mYt #opu
47i tT-
4-i tp 1) Uy dOng mYt #op =;Wng trEn #;> gi ,n 19nh N- tUm +7a =;Wng trEn( 0Lo +,+
ph;<ng thP+ =i t9nh +h> Nif diIn t9+h +7a =;Wng trEn(
4-i tp 2) 0h%m th>Y+ t9nh 4an?inh N-o #op =;H+ tLo ra t5 -i tp 1(
4-i tp F) 0Lo ra mYt #op #;> tr gi, trM ng>y%n t%n myN>m'r( 0Lo th>Y+ t9nh +ho th-nh
Ni%n n-y( ?hi sc =;H+ #;> tr th nhUn +ho 1$$( 8- 1hi sc =;H+ tr>y +p th +hia +ho 1$$(
4-i tp G) Ch;<ng trnh sa> +6 #ai( &Jy sna #ai +7a +h;<ng trnh N- i%n dM+h +h;<ng trnh(
DEng #Inh n-o gUy ra #aiu
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
using System.Console;
class VD1
{
public string first;
}
class Tester
{
public static void Main()
{
VD1 vd = new VD1();
Write("Nhap vao mot chuoi: );
vd.first = ReadLine();
Write("Chuoi nhap vao: {0}, vd.first);
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
4-i tp Q) Ch;<ng trnh sa> +6 #ai( &Jy sna #ai +7a +h;<ng trnh N- i%n dM+h +h;<ng trnh(
DEng #Inh n-o gUy ra #aiu
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
XyDngLp!"#iT$%ng
12)
NgnNgLpTrnhC#
class Class1
{
public static void GetNumber(ref int x, ref int y)
{
x = 5;
y = 10;
}
public static void Main()
{
int a = 0, b = 0;
GetNumber(a, b);
System.Console.WriteLine("a = {0} \nb = {1}, a, b);
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
CU> hVi v) Ch;<ng trnh sa> =Uy +6 #ai( &Jy sna #ai N- +ho i@t #Inh n-o ph,t sinh #aiu
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Class Tester
{
public static void Main()
{
Display();
}
public static void Display()
{
System.Console.WriteLine("Hello!);
return 0;
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
CU> hVi w) 8i@t #op gi*i ph;<ng trnh + hai( Lop n-y +6 +,+ th>Y+ t9nh af f + N- nghiIm
_1f _2( &Jy _Uy dOng th'o h;ong =ci t;Hng #op tr%n( Lop +ho phqp %n ngo-i _'m =;H+ +,+
nghiIm +7a ph;<ng trnh N- +ho phqp thi@t #p hay _'m +,+ gi, trM af f +(
XyDngLp!"#iT$%ng
12N
NgnNgLpTrnhC#
C4/Nng 1
2 TH 7 - HNH
-rc giCt 4f6 HI tZng P@<t 4f6
V( Q3 t456
T4(c t4i Q3 t456
Gii +4/Nng t4`c Q4Ri '(ng cO6 )*+ cN
sR
Gii +4/Nng t4`c cO6 )*+ cN sR
-i!@ Q4i_n tr@& n@?t
-6 48n4
2i_@ X6 48n4
P4/Nng t4`c X6 48n4
T5 Q4f6 n[\ HI oH[rri'[
L*+ tr5@ t/0ng
G.c cO6 t?t c" c<c )*+ , )*+ Ug[ct
aoning HI ngoning ' )iC@
aoning t4(c 4iCn ngG Xcn4
ngoning +4"i t4(c 4iCn t/Yng Gin4
C<c )*+ );ng n46@
C%@ 4ji k gIi tJ+
Trong chFng trc z trnh L;V c2ch tBo ra nh?ng ki3u 5? 7i/u &i LYng .i/c UPV
5Wng c2c 7C i tGng. Ti#C th'o chFng n;V sH a ch$ng ta i sPu .;o &i !uan h/ gi?a
nh?ng i tGng trong th# gii thWc .; c2ch &> hnh hKa nh?ng !uan h/ trong UPV 5Wng
chFng trnh. *hFng - cng gii thi/u kh2i ni/& ac Li/t hKa {sC'cia7iation} Gc c;i at
trong ng>n ng? *@ th>ng !ua sW k# thJa {inh'ritanc'}.
&'Th()*")+nh
12-
NgnNgLpTrnhC#
"h2i ni/& a hnh {Co7V&orChis&} cng Gc trnh L;V trong chFng -v PV 7; kh2i
ni/& !uan trOng trong 7SC trnh hng i tGng. "h2i ni/& n;V cho ChgC c2c th3 hi/n ca
7C cK 7i9n h/ .i nhau cK th3 Gc UE 7] th'o &et c2ch tng !u2t.
*ui cong 7; Chmn trnh L;V .` c2c 7C c> 7SC {s'a7'5 c7ass} kh>ng Gc at Li/t hKav
haV c2c 7C trJu tGng sE 56ng trong ac Li/t hKa. +C i tGng Object 7; gc ca tht cD c2c
7C cng Gc thDo 7uSn f Chmn cui chFng.
]_c Ii+t hGa *7 tng qu/t hGa
+C .; c2c th3 hi/n ca 7C t4c i tGng tuV kh>ng tn tBi trong cong &et khiv nhng
ch$ng tn tBi trong &et &Bng 7i sW Ch6 thuec .; !uan h/ 7cn nhau. I 56 nh con ngi .;
Uz hei eng .St cong sng trong &et th# gii cK !uan h/ 7o;i .i nhau.
uan h/ 7; &et {isia} 7; &et sW =^+ iIt h6a. "hi ch$ng ta nKi rYng &o 7; &et 7oBi eng
.St cK .$v cK nghda 7; ch$ng ta z nKi rYng &o 7; &et trng hGC ac Li/t ca 7oBi eng .St
cK .$. NK cK tht cD c2c ac tInh ca Lht c4 eng .St cK .$ n;o {nh sinh ra conv cK s?a & .;
cK 7>ng...}. TuV nhi9nv &o cK th9& c2c ac tInh ri9ng Gc U2c :nh trong hO nh; &o &;
c2c hO eng .St cK .$ kh2c kh>ng cK Gc. *hK cng 7; 7oBi eng .St cK .$v chK cng cK tht
cD c2c thuec tInh ca eng .St cK .$v .; ri9ng nK cn cK th9& c2c thuec tInh ri9ng U2c :nh
hO 7o;i chK &; kh2c .i c2c thuec tInh ac Li/t ca 7o;i kh2c .I 56 nh &o chng hBn.
uan h/ ac Li/t hKa .; tng !u2t hKa 7; hai &i !uan h/ i ngcu .; ChPn chC .i nhau.
*h$ng cK !uan h/ i ngcu . ac Li/t Gc U'& nh 7; &at ngGc 7Bi ca tng !u2t. po Kv
7o;i chK .; &o 7; trng hGC ac Li/t ca eng .St cK .$. NgGc 7Bi eng .St cK .$ 7;
trng hGC tng !u2t tJ c2c 7o;i chK .; &o.
Mi !uan h/ 7; ChPn chC Lfi . ch$ng ta tBo ra &et cPV !uan h/v trong K c2c trng hGC
ac Li/t 7; nh?ng nh2nh ca trng hGC tng !u2t. Trong cPV ChPn chC n;V n#u 5i chuV3n 79n
tr9n cong ta sH Gc trng hGC tng !u2t hKav .; ngGc 7Bi n#u 5i chuV3n Uung ngGc
nh2nh th ta Gc trng hGC ac Li/t hKa. Ta cK sF ChPn chC &inh hOa cho 7o;i chKv &o
.; eng .St cK .$ nh tr9nu
&'Th()*")+nh
120
-NG
T
C
MU CH
NgnNgLpTrnhC#
TFng tWv khi ch$ng ta nKi rYng ListBox .; Button 7; nh?ng Windowv ta ChDi chb ra nh?ng
ac tInh .; h;nh .i ca nh?ng Window cK trong cD hai 7C tr9n. [aV nKi c2ch kh2cv Window
7; tng !u2t hKa chia U nh?ng thuec tInh ca hai 7C ListBox .; Buttonv trong khi K &\i
trng hGC ac Li/t ListBox .; Button sH cK ri9ng nh?ng thuec tInh .; h;nh .i ac tho kh2c.
Ngn ng G 48n4 4f6 t4.ng n4?t ]ML^
lM+ { lnifi'5 Mo5'7ing +anguag'} 7; ng>n ng? chuMn hKa 3 &> tD cho
&et h/ thng hoac thFng &Bi. Trong chFng n;V sE 56ng &et s Chmn
ca &> hnh lM+ 3 trnh L;V c2c Li3u !uan h/ gi?a c2c 7C.
Trong lM+v nh?ng 7C Gc th3 hi/n nh c2c khi heCv t9n ca 7C Gc
at tr9n cong ca khi heCv .; c2c ChFng th4c haV c2c Li#n th;nh .i9n
Gc at L9n trong heC.
Nh trong hnh -.1v &> hnh !uan h/ tng !u2t hKa .; ac Li/t hKa Gc
trnh L;V !ua lM+v ghi ch$ rYng &i t9n i tJ c2c 7C ac Li/t hKa #n
7C tng !u2t hKa.
&nh Q(2) >an hI gia th-nh ph.n +na sk
Th>ng thng 7u ] rYng khi hai 7C chia U ch4c nqng .i nhauv th ch$ng Gc trIch ra
c2c Chmn chung .; a .;o 7C cF sf chia U. ^i`u n;V h#t s4c cK 7Giv . nK cung chC khD
nqng cao 3 sE 56ng 7Bi c2c &z ngun chung .; 5 5;ng 5uV tr &z ngun.
&'Th()*")+nh
12=
in'o\
a@tton List aon
in'o\
NgnNgLpTrnhC#
&nh Q(F D~n _>Xt t5 Window
ZiD sE ch$ng ta L_t mu tBo &et 7oBt c2c 7C i tGng th'o hnh .H -.) nh L9n tr9n. Sau
khi 7;& .i/c .i RadioButtonv CheckBoxv .; CommandButton &et thi gian ta nhSn thhV
ch$ng chia U nhi`u thuec tInh .; h;nh .i ac Li/t hFn Window nhng 7Bi kh2 tng !u2t cho
cD La 7C n;V. Nh .SV ta cK th3 chia c2c thuec tInh .; h;nh .i th;nh &et nhK& 7C cF sf
ri9ng 7hV t9n 7; Button. Sau K ta s_C U#C 7Bi chu tr$c k# thJa nh hnh .H -.N. ^PV 7; .I 56 .`
c2ch tng !u2t hKa Gc sE 56ng 3 Ch2t tri3n hng i tGng.
&nh Q(G) CUy A>an hI #op +na sk
Trong &> hnh lM+ tr9n Gc .H 7Bi !uan h/ gi?a c2c 7C. Trong K cD hai 7C Button .;
ListBox i`u 5cn Uuht tJ 7C Windowv trong K Button cK trng hGC ac Li/t 7; CheckBox .;
Command. *ui cong th RadioButton Gc 5cn Uuht tJ CheckBox. *h$ng ta cng cK th3 nKi
rYng RadioButton 7; &et CheckBoxv .; ti#C t6c CheckBox 7; &et Buttonv .; cui cong
Button 7; Window.
&'Th()*")+nh
12A
in'o\
CoGG6n'
List aon
C4[cQ aon
a@tton
R6'io
a@tton
R6'io
a@tton
List aon C4[cQ aon CoGG6n'
NgnNgLpTrnhC#
SW thi#t k# tr9n kh>ng ChDi 7; 5uV nhht haV c2ch tt nhht 3 t ch4c nh?ng i tGngv
nhng K 7; khfi i3& 3 hi3u .` c2ch !uan h/ gi?a i tGng .i c2c i tGng kh2c.
SV k thFa
Trong ng>n ng? *@v !uan h/ ac Li/t hKa Gc thWc thi LYng c2ch sE 56ng sO 1@ th5a.
^PV kh>ng ChDi 7; c2ch 5uV nhht 3 thWc thi ac Li/t hKav nhng nK 7; c2ch chung nhht .; tW
nhi9n nhht 3 thWc thi !uan h/ n;V.
Trong &> hnh trcv ta cK th3 nKi ListBox k# thJa haV Gc 5cn Uuht tJ Window.
Window Gc U'& nh 7; 7C cF sfv .; ListBox Gc U'& nh 7; 7C 5cn Uuht. Nh .SVv
ListBox 5cn Uuht tht cD c2c thuec tInh .; h;nh .i tJ 7C Window .; th9& nh?ng Chmn ac Li/t
ri9ng 3 U2c nhSn ListBox.
ThVc thi k thFa
Trong ng>n ng? *@ 3 tBo &et 7C 5cn Uuht tJ &et 7C ta th9& 5hu hai chh& .;o sau t9n
7C 5cn Uuht .; trc t9n 7C cF sfu
public class ListBox : Window
^oBn 7/nh tr9n khai L2o &et 7C &i t9n 7; ListBoxv 7C n;V Gc 5cn Uuht tJ Window.
*h$ng ta cK th3 Oc 5hu hai chh& cK th3 Gc Oc nh 7; sd~n _>Xt t5t.
+C 5cn Uuht sH k# thJa tht cD c2c th;nh .i9n ca 7C cF sfv Lao g& tht cD c2c ChFng th4c
.; Li#n th;nh .i9n ca 7C cF sf. +C 5cn Uuht Gc tW 5o thWc thi c2c Chi9n LDn ca &et
ChFng th4c ca 7C cF sf. +C 5cn Uuht cng cK th3 tBo &et ChFng th4c &i LYng .i/c
2nh 5hu .i tJ khKa n[\. I 56 -.1 sau &inh hOa .i/c tBo .; sE 56ng c2c 7C cF sf .; 5cn
Uuht.
89 d: Q(1) Sn d:ng #op d~n _>Xt(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
public class Window
{
// Hm khi dung ly hai s nguyn ch
// dn vi tr ca ca s trn console
public Window( int top, int left)
{
this.top = top;
this.left = left;
}
// m phng v ca s
public void DrawWindow()
{
Console.WriteLine("Drawing Window at {0}, {1}, top, left);
&'Th()*")+nh
12T
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
chinh la override phuong thuc
cu cua lop cha
NgnNgLpTrnhC#
}
// C hai bin thnh vin private do d
// hai bin ny s khng thy bn trong lp
// dn xut.
private int top;
private int left;
}
// ListBox dn xut t Window
public class ListBox: Window
{
// Khi dung c tham s
public ListBox(int top, int left,
string theContents) : base(top, left) // gi khi dung ca lp co s
{
mListBoxContents = theContents;
}
// Tao mt phin bn mi cho phong thc DrawWindow
// v trong lp dn xut mun thay di hnh vi thuc hin
// bn trong phong thc ny
public new void DrawWindow()
{
base.DrawWindow();
Console.WriteLine(" ListBox write: {0}, mListBoxContents);
}
// bin thnh vin private
private string mListBoxContents;
}
public class Tester
{
public static void Main()
{
// tao di tong cho lp co s
Window w = new Window(5, 10);
w.DrawWindow();
// tao di tong cho lp dn xut
ListBox lb = new ListBox( 20, 10, "Hello world!);
lb.DrawWindow();
}
&'Th()*")+nh
1)0
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*u
Drawing >indow at: 5% 10
Drawing >indow at: )0% 10
ListBox write: ,e!!o wor!d5
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
I 56 -.1 L_t mu .i .i/c khai L2o &et 7C cF sf t9n Window. +C n;V thWc thi &et ChFng
th4c khfi 5Wng .; &et ChFng th4c Fn giDn DrawWindow. +C cK hai Li#n th;nh .i9n
private 7; top .; leftv hai Li#n n;V 5o khai L2o 7; private n9n chb sE 56ng L9n trong ca 7C
Windowv c2c 7C 5cn Uuht sH kh>ng truV cSC Gc. ta sH L;n ti#C .` .I 56 n;V trong Chmn ti#C
th'o.
YQi -h?ng th1c khei 2Vng cda ,- c? se
Trong .I 56 -.1v &et 7C &i t9n 7; ListBox Gc 5cn Uuht tJ 7C cF sf Windowv 7C
ListBox cK &et ChFng th4c khfi 5Wng 7hV La tha& s. Trong ChFng th4c khfi 5Wng ca 7C
5cn Uuht n;V cK gOi ChFng th4c khfi 5Wng ca 7C cF sf. *2ch gOi Gc thWc hi/n LYng .i/c
at 5hu hai chh& ngaV sau Chmn khai L2o 5anh s2ch tha& s .; tha& chi#u #n 7C cF sf
th>ng !ua tJ khKa baseu
public ListBox(
int theTop,
int theLeft,
string theContents):
base( theTop, theLeft) // gi khi tao lp co s
8fi . c2c 7C kh>ng Gc k# thJa c2c ChFng th4c khfi 5Wng ca 7C cF sfv 5o K 7C 5cn
Uuht ChDi thWc thi ChFng th4c khfi 5Wng ri9ng ca nK. ; chb cK th3 sE 56ng ChFng th4c
khfi 5Wng ca 7C cF sf th>ng !ua .i/c gOi tng &inh.
Met i`u 7u ] trong .I 56 -.1 7; .i/c 7C ListBox thWc thi &et Chi9n LDn &i ca ChFng
th4c DrawWindow{}u
public new void DrawWindow()
TJ khKa new Gc sE 56ng f PV 3 chb ra rYng ngi 7SC trnh ang tBo ra &et Chi9n LDn
&i cho ChFng th4c n;V L9n trong 7C 5cn Uuht.
N#u 7C cF sf cK ChFng th4c khfi 5Wng &ac :nhv th 7C 5cn Uuht kh>ng cmn L_t Luec ChDi
gOi ChFng th4c khfi 5Wng ca 7C cF sf &et c2ch tng &inh. ThaV .;o K ChFng th4c
khfi 5Wng &ac :nh ca 7C cF sf sH Gc gOi &et c2ch ngm& :nh. TuV nhi9nv n#u 7C cF sf
kh>ng cK ChFng th4c khfi 5Wng &ac :nhv th tht cD c2c 7C 5cn Uuht ca nK ChDi gOi
ChFng th4c khfi 5Wng ca 7C cF sf &et c2ch tng &inh th>ng !ua .i/c sE 56ng tJ khKa
Las'.
&'Th()*")+nh
1)1
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
2hi +h3u *ng nh thDo 7uSn trong chFng Nv n#u ch$ng ta kh>ng khai L2o Lht c4 ChFng
th4c khfi 5Wng n;ov th trnh Li9n 5:ch sH tBo ri9ng &et ChFng th4c khfi 5Wng cho ch$ng
ta. "hi &; ch$ng ta .i#t ri9ng c2c ChFng th4c khfi 5Wng haV 7; sE 56ng ChFng th4c khfi
5Wng &ac :nh 5o trnh Li9n 5:ch cung chC haV kh>ng th ChFng th4c khfi 5Wng &ac :nh
kh>ng 7hV &et tha& s n;o h#t. TuV nhi9nv 7u ] rYng khi ta tBo Lht c4 ChFng th4c khfi
5Wng n;o th trnh Li9n 5:ch sH kh>ng cung chC ChFng th4c khfi 5Wng cho ch$ng ta.
YQi -h?ng th1c cda ,- c? se
Trong .I 56 -.1v ChFng th4c DrawWindow{} ca 7C ListBox sH 7;& Mn .; thaV th#
ChFng th4c DrawWindow ca 7C cF sf Window. "hi ch$ng ta gOi ChFng th4c
DrawWindow ca &et i tGng ca 7C ListBox th ChFng th4c ListBox.DrawWindow{} sH
Gc thWc hi/nv kh>ng ChDi ChFng th4c Window.DrawWindow{} ca 7C cF sf Window. TuV
nhi9nv ta cK th3 gOi ChFng th4c DrawWindow{} ca 7C cF sf th>ng !ua tJ khKa baseu
base.DrawWindow(); // gi phong thc co s
TJ khKa Las' chb #n 7C cF sf cho i tGng hi/n h;nh.
]iCu khi0n truL Uuit
"hD nqng hi/n h?u ca &et 7C .; c2c th;nh .i9n ca nK cK th3 Gc hBn ch# th>ng !ua
.i/c sE 56ng c2c L sung truV cSCu publicv privatev protectedv internalv .; protected
internal.
Nh ch$ng ta z thhVv public cho ChgC &et th;nh .i9n cK th3 Gc truV cSC Lfi &et
ChFng th4c th;nh .i9n ca nh?ng 7C kh2c. Trong khi K private chb cho ChgC c2c ChFng
th4c th;nh .i9n trong 7C K truV Uuht. TJ khKa protected th &f reng th9& khD nqng ca
private cho ChgC truV Uuht tJ c2c 7C 5cn Uuht ca 7C K. "nternal &f reng khD nqng cho
ChgC Lht c4 ChFng th4c ca 7C n;o trong cong &et khi k#t hGC {ass'&L7V} cK th3 truV Uuht
Gc. Met khi k#t hGC Gc hi3u nh 7; &et khi chia U .; 5ong 7Bi trong *+,. Th>ng
thngv khi n;V 7; tSC hGC c2c tSC tin .St 7] Gc 7u tr? trong &et th &6c Lao g& c2c tSC
tin t;i nguV9nv chFng trnh thWc thi th'o ng>n ng? <+v...
TJ khKa internal protected i cong .i nhau cho ChgC c2c th;nh .i9n ca cong &et
khi ass'&L7V hoac c2c 7C 5cn Uuht ca nK cK th3 truV cSC. *h$ng ta cK th3 U'& sW thi#t k#
n;V ging nh 7; internal haV protected.
*2c 7C cng nh nh?ng th;nh .i9n ca 7C cK th3 Gc thi#t k# .i Lht c4 &4c e truV Uuht
n;o. Met 7C thng cK &4c e truV Uuht &f reng hFn c2ch th;nh .i9n ca 7Cv cn c2c
th;nh .i9n th &4c e truV Uuht thng cK nhi`u hBn ch#. po Kv ta cK th3 :nh nghda &et 7C
MyClass nh sauu
public class MyClass
{
//...
protected int myValue;
&'Th()*")+nh
1)2
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
}
Nh tr9n Li#n th;nh .i9n myValue Gc khai L2o truV Uuht protected &ac 5o LDn thPn 7C
Gc khai L2o 7; public. Met 7C public 7; &et 7C sXn s;ng cho Lht c4 7C n;o kh2c &un
tFng t2c .i nK. ^>i khi &et 7C Gc tBo ra chb 3 trG gi$C cho nh?ng 7C kh2c trong &et
khi ass'&C7Vv khi K nh?ng 7C n;V n9n Gc khai L2o khKa internal hFn 7; khKa public.
]a hnh
*K hai c2ch th4c kh2 &Bnh 3 thWc hi/n .i/c k# thJa. Met 7; sE 56ng 7Bi &z ngunv khi
ch$ng ta tBo ra 7C ListBoxv ch$ng ta cK th3 sE 56ng 7Bi &et .;i c2c th;nh Chmn trong 7C cF
sf nh Window.
TuV nhi9nv c2ch sE 56ng th4 hai ch4ng tQ Gc s4c &Bnh to 7n ca .i/c k# thJa K 7;
t9nh =a hnh {Co7V&orChis&}. Th'o ti#ng ynh tJ n;V Gc k#t hGC tJ Co7V 7; nhi`u .; &orCh
cK nghda 7; for& {hnh th4c}. po .SVv a hnh Gc hi3u nh 7; khD nqng sE 56ng nhi`u hnh
th4c ca &et ki3u &; kh>ng cmn ChDi !uan tP& #n tJng chi ti#t.
"hi &et tng ;i i/n thoBi gfi cho &2V i/n thoBi ca ch$ng ta &et tIn hi/u cK cuec gOi.
Tng ;i kh>ng !uan tP& #n i/n thoBi ca ta 7; 7oBi n;o. *K th3 ta ang 5ong &et i/n
thoBi c 5ong &otor 3 rung chu>ngv haV 7; &et i/n thoBi i/n tE Ch2t ra ti#ng nhBc s.
[o;n to;n c2c th>ng tin .` i/n thoBi ca ta kh>ng cK ] nghda g .i tng ;iv tng ;i chb
Li#t &et ki3u cF LDn 7; i/n thoBi &; th>i .; 5i/n thoBi n;V sH Li#t c2ch L2o chu>ng. *n .i/c
L2o chu>ng nh th# n;o th tng ;i kh>ng !uan tP&. TK& 7Biv tng ;i chb cmn LDo i/n thoBi
hzV 7;& i`u g K 3 r'ng. *n Chmn cn 7Bi t4c 7; c2ch th4c r'ng 7; toV thuec .;o tJng 7oBi
i/n thoBi. ^PV chInh 7; tInh a hnh.
Ki0u a hnh
po &et ListBox 7; &et Window .; &et Button cng 7; &et Windowv ch$ng ta &ong
&un sE 56ng cD hai ki3u 5? 7i/u n;V trong tnh hung cD hai Gc gOi 7; Window. I 56 nh
trong &et for& giao 5i/n tr9n MS ~in5o(sv for& n;V ch4a &et tSC c2c th3 hi/n ca Window.
"hi for& Gc hi3n th:v nK V9u cmu tht cD c2c th3 hi/n ca Window tW thWc hi/n .i/c t> .H.
Trong trng hGC n;Vv for& kh>ng &un Li#t th;nh Chmn th3 hi/n 7; 7oBi n;o nh Buttonv
CheckBoxv...v. ^i`u !uan trOng 7; for& kIch hoBt to;n Le tSC hGC n;V tW thWc hi/n .i/c .H.
[aV nKi ng_n gOn 7; for& &un i UE .i nh?ng i tGng Window n;V &et c2ch a hnh.
.h?ng th1c a hnh
^3 tBo &et ChFng th4c h\ tInh a hnhv ch$ng ta cmn ChDi khai L2o khKa virtual trong
ChFng th4c ca 7C cF sf. I 56v 3 chb :nh rYng ChFng th4c DrawWindow{} ca 7C
Window trong .I 56 -.1 7; a hnhv Fn giDn 7; ta th9& tJ khKa virtual .;o khai L2o nh sauu
public virtual void DrawWindow()
+$c n;V th c2c 7C 5cn Uuht Gc tW 5o thWc thi c2c c2ch UE ri9ng ca &nh trong Chi9n
LDn &i ca ChFng th4c DrawWindow{}. ^3 7;& Gc i`u n;V chb cmn th9& tJ khKa
&'Th()*")+nh
1))
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
Vi du hay ve tinh da hinh
NgnNgLpTrnhC#
override 3 chng 79n ChFng th4c Do DrawWindow{} ca 7C cF sf. Sau K th9& c2c oBn
&z ngun &i .;o ChFng th4c .i#t chng n;V.
Trong .I 56 &inh hOa -.2 sauv 7C ListBox 5cn U6ht tJ 7C Window .; thWc thi &et Chi9n LDn
ri9ng ca ChFng th4c DrawWindow{}u
public override void DrawWindow()
{
base.DrawWindow();
Console.WriteLine("Writing string to the listbox: {0}, listBoxContents);
}
TJ khKa override LDo .i trnh Li9n 5:ch rYng 7C n;V thWc hi/n .i/c Ch !uV#t 7Bi ChFng
th4c DrawWindow{} ca 7C cF sf. TFng tW nh .SV ta cK th3 thWc hi/n .i/c Ch !uV#t
ChFng th4c n;V trong &et 7C 5cn Uuht kh2c nh Buttonv 7C n;V cng Gc 5cn Uuht tJ
Window.
Trong Chmn thPn ca .I 56 -.2v mu ti9n ta tBo ra La i tGngv i tGng th4 nhht ca
Windowv i tGng th4 hai ca 7C ListBox .; i tGng cui cong ca 7C Button. Sau K ta
thWc hi/n .i/c gOi ChFng th4c DrawWindow{} cho &\i i tGng sauu
Window win = new Window( 1, 2 );
ListBox lb = new ListBox( 3, 4, "Stand alone list box);
Button b = new Button( 5, 6 );
win.DrawWindow();
lb.DrawWindow();
b.DrawWindow();
^oBn chFng trnh tr9n thWc hi/n c2c c>ng .i/c nh V9u cmu ca ch$ng tav 7; tJng i tGng
thWc hi/n c>ng .i/c t> .H ca nK. TuV nhi9nv cho #n 7$c n;V th cha cK Lht c4 sW a hnh
n;o Gc thWc thi. MOi chuV/n .cn Lnh thng cho #n khi ta &un tBo ra &et &Dng c2c i
tGng Windowv Lfi . ListBox cng 7; &et Window n9n ta cK th3 tW 5o at &et i tGng
ListBox .;o .: trI ca &et i tGng Window trong &Dng tr9n. ; tFng tW ta cng cK th3 at
&et i tGng Button .;o Lht c4 .: trI n;o trong &Dng c2c i tGng Windowv . &et Button
cng 7; &et Window.
Window[] winArray = new Window[3];
winArray[0] = new Window( 1, 2 );
winArray[1] = new ListBox( 3, 4, "List box is array);
winArray[2] = new Button( 5, 6 );
*huV/n g UDV ra khi ch$ng ta gOi ChFng th4c DrawWindow{} cho tJng i tGng trong
&Dng winArray.
for( int i = 0; i < 3 ; i++)
{
winArray[i].DrawWindow();
&'Th()*")+nh
1)N
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
}
Trnh Li9n 5:ch i`u Li#t rYng cK La i tGng Windows trong &Dng .; ChDi thWc hi/n .i/c
gOi ChFng th4c DrawWindow{} cho c2c i tGng n;V. N#u ch$ng ta kh>ng 2nh 5hu
ChFng th4c DrawWindow{} trong 7C Window 7; virtual th ChFng th4c DrawWindow{}
trong 7C Window sH Gc gOi La 7mn. TuV nhi9n 5o ch$ng ta z 2nh 5hu ChFng th4c n;V Do
f 7C cF sf .; thWc thi .i/c Ch !uV#t ChFng th4c n;V Q c2c 7C 5cn Uuht.
"hi ta gOi ChFng th4c DrawWindow trong &Dngv trnh Li9n 5:ch sH 5 ra Gc chInh U2c
ki3u 5? 7i/u n;o Gc thWc thi trong &Dng khi K cK La ki3u sH Gc thWc thi 7; &et Windowv
&et ListBoxv .; &et Button. ; trnh Li9n 5:ch sH gOi chInh U2c ChFng th4c ca tJng i
tGng. ^PV 7; i`u ct 7i .; tinh hoa ca tInh chht a hnh. ^oBn chFng trnh ho;n chbnh
-.2 &inh hOa cho sW thWc thi tInh chht a hnh.
89 d: Q(2) Sn d:ng ph;<ng thP+ *o(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
public class Window
{
public Window( int top, int left )
{
this.top = top;
this.left = left;
}
// phong thc doc khai bo o
public virtual void DrawWindow()
{
Console.WriteLine( "Window: drawing window at {0}, {1}, top, left );
}
// bin thnh vin ca lp
protected int top;
protected int left;
}
public class ListBox : Window
{
// phong thc khi dung c tham s
public ListBox( int top, int left, string contents ): base( top, left)
{
listBoxContents = contents;
}
// thuc hin vic ph quyt phong thc DrawWindow
&'Th()*")+nh
1)-
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
public override void DrawWindow()
{
base.DrawWindow();
Console.WriteLine(" Writing string to the listbox: {0}, listBoxContents);
}
// bin thnh vin ca ListBox
private string listBoxContents;
}
public class Button : Window
{
public Button( int top, int left) : base( top, left )
{
}
// ph quyt phong thc DrawWindow ca lp co s
public override void DrawWindow()
{
Console.WriteLine(" Drawing a button at {0}: {1}, top, left);
}
}
public class Tester
{
static void Main()
{
Window win = new Window(1,2);
ListBox lb = new ListBox( 3, 4, " Stand alone list box);
Button b = new Button( 5, 6 );
win.DrawWindow();
lb.DrawWindow();
b.DrawWindow();
Window[] winArray = new Window[3];
winArray[0] = new Window( 1, 2 );
winArray[1] = new ListBox( 3, 4, "List box is array);
winArray[2] = new Button( 5, 6 );
for( int i = 0; i < 3; i++)
{
winArray[i].DrawWindow();
}
}
&'Th()*")+nh
1)0
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*u
>indow: drawing window at 1: )
>indow: drawing window at 3: *
>riting string to the listbox: Stand a!one !ist bo(
Drawing a button at 5: +
>indow: drawing >indow at 1: )
>indow: drawing window at 3: *
>riting string to the listbox: 9ist bo( is arra'
Drawing a button at 5: +
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
+u ] trong sut .I 56 n;Vv ch$ng ta 2nh 5hu &et ChFng th4c Ch !uV#t &i .i tJ khKa
Ch !uV#t overrideu
public override void DrawWindow()
+$c n;V trnh Li9n 5:ch Li#t c2ch sE 56ng ChFng th4c Ch !uV#t khi gaC i tGng &ang
hnh th4c a hnh. Trnh Li9n 5:ch ch:u tr2ch nhi/& trong .i/c ChPn ra ki3u 5? 7i/u thSt ca
i tGng 3 sau n;V UE 7]. po K ChFng th4c ListBox.DrawWindow{} sH Gc gOi khi &et
i tGng Window tha& chi#u #n &et i tGng thSt sW 7; ListBox.
2hi +h3u *h$ng ta ChDi chb :nh r r;ng .i tJ khKa override khi khai L2o &et ChFng
th4c Ch !uV#t ChFng th4c Do ca 7C cF sf. ^i`u n;V 5 7m& 7cn .i ngi 7SC trnh *
. tJ khKa n;V trong * cK th3 LQ !ua &; trnh Li9n 5:ch * .cn hi3u.
TF khGa n#$ *7 o*#rri2#
Trong ng>n ng? *@v ngi 7SC trnh cK th3 !uV#t :nh Ch !uV#t &et ChFng th4c Do
LYng c2ch khai L2o tng &inh tJ khKa override. ^i`u n;V gi$C cho ta a ra &et Chi9n LDn
&i ca chFng trnh .; sW thaV i ca 7C cF sf sH kh>ng 7;& Dnh hfng #n chFng trnh
.i#t trong c2c 7C 5cn Uuht. i/c V9u cmu sE 56ng tJ khKa override sH gi$C ta ngqn ngJa .hn
` n;V.
8PV gi ta thE L;n .` .hn ` n;Vv giD sE 7C cF sf Window ca .I 56 trc Gc .i#t Lfi
&et c>ng tV y. *ng giD sE rYng 7C ListBox .; RadioButton Fc .i#t tJ nh?ng ngi 7SC
trnh ca c>ng tV 8 .; hO 5ong 7C cF sf Window &ua Gc ca c>ng tV y 7;& 7C cF sf cho
hai 7C tr9n. Ngi 7SC trnh trong c>ng tV 8 kh>ng cK hoac cK rht It sW ki3& so2t .` nh?ng
thaV i trong tFng 7ai .i 7C Window 5o c>ng tV y Ch2t tri3n.
"hi nhK& 7SC trnh ca c>ng tV 8 !uV#t :nh th9& &et ChFng th4c Sort( ) .;o 7C ListBoxu
public class ListBox : Window
{
public virtual void Sort( ) {.}
&'Th()*")+nh
1)=
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
}
i/c th9& .;o .cn Lnh thng cho #n khi c>ng tV yv t2c giD ca 7C cF sf Windowv a ra
Chi9n LDn th4 hai ca 7C Window. ; trong Chi9n LDn &i n;V nh?ng ngi 7SC trnh ca
c>ng tV y z th9& &et ChFng th4c Sort{ } .;o 7C cF sf Windowu
public class Window
{
//..
public virtual void Sort( ) {.}
}
Trong c2c ng>n ng? 7SC trnh hng i tGng kh2c nh *v ChFng th4c Do &i Sort()
trong 7C Window LPV gi sH h;nh eng ging nh 7; &et ChFng th4c cF sf cho ChFng
th4c Do trong 7C ListBox. Trnh Li9n 5:ch cK th3 gOi ChFng th4c Sort{ } trong 7C ListBox
khi ch$ng ta cK ] :nh gOi ChFng th4c Sort{ } trong Window. Trong ng>n ng? wa.av n#u
ChFng th4c Sort{ } trong Window cK ki3u trD .` kh2c ki3u trD .` ca ChFng th4c Sort{ }
trong 7C ListBox th sH Gc L2o 7\i 7; ChFng th4c Ch !uV#t kh>ng hGC 7/.
Ng>n ng? *@ ngqn ngJa sW 7cn 7en n;Vv trong *@ &et ChFng th4c Do th Gc U'& nh 7;
gc r ca sW ChPn Chi Do. po .SVv &et khi *@ t& thhV &et ChFng th4c khai L2o 7; Do th
nK sH kh>ng thWc hi/n Lht c4 .i/c t& ki#& n;o tr9n cPV ChPn chC k# thJa. N#u &et ChFng
th4c Do Sort{ } Gc trnh L;V trong 7C Windowv th khi thWc hi/n h;nh .i ca 7C Listbox
kh>ng thaV i.
TuV nhi9n khi Li9n 5:ch 7Biv th trnh Li9n 5:ch sH a ra &et cDnh L2o ging nh sauu
\class1.cs(54, 24): warning CS0114: `ListBox.Sort( ) hides
inherited member `Window.Sort().
To make the current member override that implementation,
add the override keyword. Otherwise add the new keyword.
^3 7oBi LQ cDnh L2o n;Vv ngi 7SC trnh ChDi chb r ] :nh ca anh ta. ynh ta cK th3 2nh 5hu
ChFng th4c ListBox.Sort{ } .i tJ khKa 7; newv .; nK kh>ng ChDi Ch !uV#t ca Lht c4
ChFng th4c Do n;o trong 7C Windowu
public class ListBox : Window
{
public new virtual Sort( ) {.}
}
i/c thWc hi/n khai L2o tr9n sH 7oBi LQ Gc cDnh L2o. Mac kh2c n#u ngi 7SC trnh &un
Ch !uV#t &et ChFng th4c trong Windowv th anh ta cmn thi#t ChDi 5ong tJ khKa override
3 khai L2o &et c2ch tng &inhu
public class ListBox : Window
{
public override void Sort( ) {}
&'Th()*")+nh
1)A
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
}
&- trFu t@ng
M\i 7C con ca 7C Window n9n thWc thi &et ChFng th4c DrawWindow{} cho ri9ng
&nh. TuV nhi9n i`u n;V kh>ng thWc sW i hQi ChDi thWc hi/n &et c2ch L_t Luec. ^3 V9u
cmu c2c 7C con {7C 5cn Uuht} ChDi thWc thi &et ChFng th4c ca 7C cF sfv ch$ng ta ChDi
thi#t k# &et ChFng th4c &et c2ch trJu tGng.
Met ChFng th4c trJu tGng kh>ng cK sW thWc thi. 1hFng th4c n;V chb Fn giDn tBo ra
&et t9n ChFng th4c .; k] hi/u ca ChFng th4cv ChFng th4c n;V sH Gc thWc thi f c2c 7C
5cn Uuht.
Nh?ng 7C trJu tGng Gc thi#t 7SC nh 7; cF sf cho nh?ng 7C 5cn Uuhtv nhng .i/c tBo
c2c th3 hi/n haV c2c i tGng cho c2c 7C trJu tGng Gc U'& 7; kh>ng hGC 7/. Met khi
ch$ng ta khai L2o &et ChFng th4c 7; trJu tGngv th ch$ng ta ChDi ngqn ch& Lht c4 .i/c tBo
th3 hi/n cho 7C n;V.
po .SVv n#u ch$ng ta thi#t k# ChFng th4c DrawWindow{} nh 7; trJu tGng trong 7C
Windowv ch$ng ta cK th3 5cn Uuht tJ 7C n;Vv nhng ta kh>ng th3 tBo Lht c4 i tGng cho 7C
n;V. "hi K &\i 7C 5cn Uuht ChDi thWc thi ChFng th4c DrawWindow{}. N#u 7C 5cn Uuht
kh>ng thWc thi ChFng th4c trJu tGng ca 7C cF sf th 7C 5cn Uuht K cng 7; 7C trJu
tGngv .; ta cng kh>ng th3 tBo c2c th3 hi/n ca 7C n;V Gc.
1hFng th4c trJu tGng Gc thi#t 7SC LYng c2ch th9& tJ khKa abstract .;o mu ca Chmn
:nh nghda ChFng th4cv c$ Ch2C thWc hi/n nh sauu
abstract public void DrawWindow( );
po ChFng th4c kh>ng cmn Chmn thWc thiv n9n kh>ng cK 5hu {} &; chb cK 5hu chh& ChMV {}
sau ChFng th4c. Nh th# .i ChFng th4c DrawWindow{} Gc thi#t k# 7; trJu tGng th chb
cmn cPu 7/nh tr9n 7; .
N#u &et haV nhi`u ChFng th4c Gc khai L2o 7; trJu tGngv th Chmn :nh nghda 7C ChDi
Gc khai L2o 7; abstractv .i 7C Window ta cK th3 khai L2o 7; 7C trJu tGng nh sauu
abstract public void Window
I 56 -.) sau &inh hOa .i/c tBo 7C Window trJu tGng .; ChFng th4c trJu tGng
DrawWindow{} ca 7C Window.
89 d: Q(F) Sn d:ng ph;<ng thP+ N- #op tr5> t;Hng(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
abstract public class Window
{
// hm khi dung ly hai tham s
public Window( int top, int left)
{
&'Th()*")+nh
1)T
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
this.top = top;
this.left = left;
}
// phong thc tru tong minh ha vic
// v ra ca s
abstract public void DrawWindow();
// bin thnh vin protected
protected int top;
protected int left;
}
// lp ListBox dn xut t lp Window
public class ListBox : Window
{
// hm khi dung ly ba tham s
public ListBox( int top, int left, string contents) : base( top, left)
{
listBoxContents = contents;
}
// ph quyt phong thc tru tong DrawWindow()
public override void DrawWindow( )
{
Console.WriteLine("Writing string to the listbox: {0}, listBoxContents);
}
// bin private ca lp
private string listBoxContents;
}
// lp Button dn xut t lp Window
public class Button : Window
{
// hm khi tao nhn hai tham s
public Button( int top, int left) : base( top, left)
{
}
// thuc thi phong thc tru tong
public override void DrawWindow()
{
Console.WriteLine("Drawing button at {0}, {1}\n, top, left);
}
&'Th()*")+nh
1N0
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
}
public class Tester
{
static void Main()
{
Window[] winArray = new Window[3];
winArray[0] = new ListBox( 1, 2, "First List Box);
winArray[1] = new ListBox( 3, 4, "Second List Box);
winArray[2] = new Button( 5, 6);
for( int i=0; i <3 ; i++)
{
winArray[i].DrawWindow( );
}
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Trong .I 56 -.)v 7C Window Gc khai L2o 7; 7C trJu tGng .; 5o .SV n9n ch$ng ta kh>ng
th3 tBo Lht c4 th3 hi/n n;o ca 7C Window. N#u ch$ng ta thaV th# th;nh .i9n mu ti9n ca
&Dngu
winArray[0] = new ListBox( 1, 2, "First List Box);
LYng cPu 7/nh sauu
winArray[0] = new Window( 1, 2);
Th trnh Li9n 5:ch sH L2o &et 7\i nh sauu
Cannot create an instance of the abstract class or interface `Window
*h$ng ta cK th3 tBo Gc c2c th3 hi/n ca 7C ListBox .; Buttonv Lfi . hai 7C n;V z Ch
!uV#t ChFng th4c trJu tGng. [aV cK th3 nKi hai 7C n;V z Gc U2c :nh {ngGc .i 7C
trJu tGng}.
*Z<n ch cda ,- trFu t@ng
Mac 5o ch$ng ta z thi#t k# ChFng th4c DrawWindow{} nh &et 7C trJu tGng 3 h\
trG cho tht cD c2c 7C 5cn Uuht Gc thWc thi ri9ngv nhng i`u n;V cK &et s hBn ch#. N#u
ch$ng ta 5cn Uuht &et 7C tJ 7C ListBox nh 7C DropDownListBoxv th 7C n;V kh>ng Gc
h\ trG 3 thWc thi ChFng th4c DrawWindow{ } cho ri9ng nK.
2hi +h3u "h2c .i ng>n ng? *v trong *@ ChFng th4c Window.DrawWindow{ } kh>ng
th3 cung chC &et sW thWc thiv 5o K ch$ng ta sH kh>ng th3 7hV Gc 7Gi Ich ca ChFng th4c
DrawWindow{} Lnh thng 5ong 3 chia U Lfi c2c 7C 5cn Uuht.
*ui cong nh?ng 7C trJu tGng kh>ng cK sW thWc thi cqn LDn ch$ng th3 hi/n ] tfng .` &et
sW trJu tGngv i`u n;V thi#t 7SC &et sW giao c cho tht cD c2c 7C 5cn Uuht. NKi c2ch kh2c
&'Th()*")+nh
1N1
NgnNgLpTrnhC#
c2c 7C trJu tGng &> tD &et ChFng th4c chung ca tht cD c2c 7C Gc thWc thi &et c2ch
trJu tGng.
tfng ca 7C trJu tGng Window th3 hi/n nh?ng thuec tInh chung cong .i nh?ng h;nh .i
ca tht cD c2c Windowv thS& chI ngaV cD khi ta kh>ng cK ] :nh tBo th3 hi/n ca chInh 7C
trJu tGng Window.
nghda ca &et 7C trJu tGng Gc Lao h;& trong chInh tJ str5> t;Hngt. +C n;V 5ong 3
thWc thi &et sWindowt trJu tGngv .; nK sH Gc Li3u 7e trong c2c th3 hi/n U2c :nh ca
Windowsv nh 7; Buttonv ListBoxv Framev...
*2c 7C trJu tGng kh>ng th3 thWc thi Gcv chb cK nh?ng 7C U2c thWc t4c 7; nh?ng 7C 5cn
Uuht tJ 7C trJu tGng n;V &i cK th3 thWc thi haV tBo th3 hi/n. Met sW thaV i .i/c sE 56ng
trJu tGng 7; :nh nghda &et giao 5i/n {int'rfac'}v Chmn n;V sH Gc trnh L;V trong *hFng
A nKi .` giao 5i/n.
*&- c9 ,T- (s#a,#2 c,ass)
NgGc .i c2c 7C trJu tGng 7; c2c 7C c> 7SC. Met 7C trJu tGng Gc thi#t k# cho c2c
7C 5cn Uuht .; cung chC c2c khu>n &cu cho c2c 7C con th'o sau. Trong khi &et 7C c> 7SC
th kh>ng cho ChgC c2c 7C 5cn Uuht tJ nK. ^3 khai L2o &et 7C c> 7SC ta 5ong tJ khKa
sealed at trc khai L2o ca 7C kh>ng cho ChgC 5cn Uuht. [mu h#t c2c 7C thng Gc
2nh 5hu sealed nhY& ngqn chan c2c tai nBn 5o sW k# thJa gPV ra.
N#u khai L2o ca 7C Window trong .I 56 -.) Gc thaV i tJ khKa 6gstr6ct LYng tJ khKa
s[6)[' {cng cK th3 7oBi LQ tJ khKa trong khai L2o ca ChFng th4c DrawWindow{}}. *hFng
trnh sH L: 7\i khi Li9n 5:ch. N#u ch$ng ta c thE Li9n 5:ch chFng trnh th sH nhSn Gc 7\i
tJ trnh Li9n 5:chu
`ListBox cannot inherit from sealed class `Window
^PV chb 7; &et 7\i trong s nh?ng 7\i nh ta kh>ng th3 tBo &et ChFng th4c th;nh .i9n
+rot[ct[' trong &et 7C khai L2o 7; s[6)['.
Yc cda tit c= c/c ,-j &- kIl#ct
Tht cD c2c 7C ca ng>n ng? *@ ca Lht c4 ki3u 5? 7i/u n;o th cng Gc 5cn Uuht tJ 7C
System.Object. Th$ .: 7; Lao g& cD c2c ki3u 5? 7i/u gi2 tr:.
Met 7C cF sf 7; cha trWc ti#C ca &et 7C 5cn Uuht. +C 5cn Uuht n;V cng cK th3 7;& cF sf
cho c2c 7C 5cn Uuht Ua hFn n?av .i/c 5cn Uuht n;V sH tBo ra &et cPV thJa k# haV &et ki#n
tr$c ChPn chC. +C gc 7; 7C nY& f tr9n cong cPV ChPn chC thJa k#v cn c2c 7C 5cn Uuht th
nY& L9n 5i. Trong ng>n ng? *@v 7C gc 7; 7C Objectv 7C n;V nY& tr9n cong trong cPV
ChPn chC c2c 7C.
+C Object cung chC &et s c2c ChFng th4c 5ong cho c2c 7C 5cn Uuht cK th3 thWc hi/n .i/c
Ch !uV#t. Nh?ng ChFng th4c n;V Lao g& Equals{} ki3& tra U'& hai i tGng cK ging
nhau haV kh>ng. 1hFng th4c GetType{} trD .` ki3u ca i tGng. ; ChFng th4c ToString
&'Th()*")+nh
1N2
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
{} trD .` &et chu\i th3 hi/n 7C hi/n h;nh. Sau PV 7; LDng tK& t_t c2c ChFng th4c ca 7C
Object.
P4/Nng t4`c C4`c nng
Equal( ) So s2nh LYng nhau gi?a hai i tGng
GetHashCode( ) *ho ChgC nh?ng i tGng cung chC ri9ng
nh?ng h;& Lq& cho sE 56ng tSC hGC.
GetType( ) *ung chC ki3u ca i tGng
ToString( ) *ung chC chu\i th3 hi/n ca i tGng
Finalize( ) pOn 5C c2c t;i nguV9n
MemberwiseClone( ) TBo &et LDn sao tJ i tGng.
4*ng Q(1) 06m trt +,+ ph;<ng thP+ +7a #op R'+t.
I 56 -.N sau &inh hOa .i/c sE 56ng ChFng th4c ToString{ } thJa k# tJ 7C Object.
89 d: Q(G) 0h5a 1@ t5 R'+t(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
public class SomeClass
{
public SomeClass( int val )
{
value = val;
}
// ph quyt phong thc ToString ca lp Object
public virtual string ToString()
{
return value.ToString();
}
// bin thnh vin private lu gi tri
private int value;
}
public class Tester
{
static void Main( )
{
int i = 5;
Console.WriteLine("The value of i is: {0}, i.ToString());
SomeClass s = new SomeClass();
Console.WriteLine("The value of s is {0}, s.ToString());
&'Th()*")+nh
1N)
NgnNgLpTrnhC#
Console.WriteLine("The value of 5 is {0},5.ToString());
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
"#t !uDu
he $a!ue o" i is: 5
he $a!ue o" s is 6
he $a!ue o" 5 is 5
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Trong t;i 7i/u ca 7C Object ChFng th4c ToString() Gc khai L2o nh sauu
public virtual string ToString();
^PV 7; ChFng th4c Do publicv ChFng th4c n;V trD .` &et chu\i .; kh>ng nhSn tha& s. Tht
cD ki3u 5? 7i/u Gc UPV 5Wng sXnv nh ki3u intv 5cn Uuht tJ 7C Object n9n nK cng cK th3
thWc thi c2c ChFng th4c ca 7C Object.
+C SomeClass trong .I 56 tr9n thWc hi/n .i/c Ch !uV#t ChFng th4c ToString()v 5o K
ChFng th4c n;V sH trD .` gi2 tr: cK nghda. N#u ch$ng ta kh>ng Ch !uV#t ChFng th4c
ToString() trong 7C SomeClassv ChFng th4c ca 7C cF sf sH Gc thWc thiv .; k#t !uD Uuht
ra sH cK thaV i nh sauu
The value of s is SomeClass
Nh ch$ng ta thhVv h;nh .i &ac :nh z trD .` &et chu\i chInh 7; t9n ca 7C ang th3 hi/n.
*2c 7C kh>ng cmn ChDi khai L2o tng &inh .i/c 5cn Uuht tJ 7C Objectv .i/c k# thJa sH
Gc a .;o &et c2ch ngm& :nh. Nh 7C SomeClass tr9n ta kh>ng khai L2o Lht c4 5cn
Uuht ca 7C n;o nhng *@ sH tW eng a 7C Object th;nh 7C 5cn Uuht. po K ta &i cK th3
Ch !uV#t ChFng th4c ToString() ca 7C Object.
4oUing *7 mnIoUing 2: ,i+u
8oUing .; unLoUing 7; nh?ng UE 7] cho ChgC ki3u 5? 7i/u gi2 tr: {nh intv longv...} Gc
i UE nh ki3u 5? 7i/u tha& chi#u {c2c i tGng}. Met gi2 tr: Gc a .;o L9n trong ca
i tGngv Gc gOi 7; 8oUing. Trng hGC ngGc 7Biv lnLoUing sH chuV3n tJ i tGng ra
&et gi2 tr:. E 7] n;V z cho ChgC ch$ng ta gOi ChFng th4c ToString( ) tr9n ki3u 5? 7i/u int
trong .I 56 -.N.
4oUing @c thVc hi+n ngh" 6nh
8oUing 7; &et sW chuV3n i ngm& :nh ca &et ki3u 5? 7i/u gi2 tr: sang ki3u 5? 7i/u
tha& chi#u 7; i tGng. 8oUing &et gi2 tr: LYng c2ch tBo ra &et th3 hi3n ca i tGng cmn
5ong .; sao chgC gi2 tr: tr9n .;o i tGng &i tBo. Ta cK hnh .H sau &inh hOa !u2 trnh
8oUing &et s nguV9n.
&'Th()*")+nh
1NN
NgnNgLpTrnhC#
&nh Q(Q) 4o_ing sc ng>y%n(
8oUing Gc thWc hi/n ngm& :nh khi ch$ng ta at &et ki3u gi2 tr: .;o &et tha& chi#u ang
ch Gi .; gi2 tr: sH Gc a .;o i tGng &et c2ch tW eng ngm& :nh. I 56v n#u ch$ng
ta g2n &et ki3u 5 7i/u cF LDn nh ki3u nguV9n int .;o &et Li#n ki3u Object {i`u n;V ho;n
to;n hGC 7/ . ki3u int Gc 5cn Uuht tJ 7C Object} th gi2 tr: n;V sH Gc a .;o Li#n
Objectv nh &inh hOa sauu
using System;
class Boxing
{
public static void Main()
{
int i = 123;
Console.WriteLine("The object value = {0}, i);
}
}
mnIoUing -h=i @c thVc hi+n tng "inh
i/c a &et gi2 tr: .;o &et i tGng Gc thWc hi/n &et c2ch ngm& :nh. ; sW thWc
hi/n ngGc 7Biv unLoUingv t4c 7; a tJ &et i tGng ra &et gi2 tr: ChDi Gc thWc hi/n &et
c2ch tng &inh. *h$ng ta ChDi thi#t 7SC th'o hai Lc sauu
&'Th()*")+nh
1N-
#eap $tack
12
i
int i 12)
o
oLk'ct oi
i LoU'5
12 Tnt
12
NgnNgLpTrnhC#
1hDi ch_c ch_n rYng i tGng z LoUing $ng ki3u gi2 tr: a ra.
Sao chgC gi2 tr: tJ th3 hi/n haV i tGng .;o Li#n k:3u gi2 tr:.
&nh Q(v) no_ing sa> 1hi thO+ hiIn 4o_ing(
^3 thWc hi/n unLoUing th;nh c>ngv th i tGng Gc unLoUing ChDi Gc tha& chi#u #n
&et i tGngv .; i tGng n;V z Gc tBo ra LYng .i/c LoUing &et gi2 tr: cong .i ki3u
ca gi2 tr: Gc a ra. 8oUing .; lnLoUing Gc &inh hOa trong .I 56 -.-.
89 d: Q(Q) 4o_ing N- no_ing(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
public class UnboxingTest
{
public static void Main()
{
int i = 123;
// Boxing
object o = i;
// Unboxing phi doc tng minh
int k = (int) o;
Console.WriteLine("k: {0}, k);
&'Th()*")+nh
1N0
#eap $tack
12
int i 12)
o
oLk'ct oi
12
Tnt
12
Q
int k {int}o
12
i LoU'5
i
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
I 56 -.- tBo &et s nguV9n i .; thWc hi/n LoUing ngm& :nh khi i Gc g2n cho &et i
tGng o. Sau K gi2 tr: Gc unLoUing &et c2ch tng &inh .; g2n #n &et Li#n nguV9n int
&iv .; cui cong gi2 tr: Gc hi3n th:.
Th>ng thngv ch$ng ta sH Lao LOc c2c hoBt eng unLoUing trong khi tr%v sH Gc trnh L;V
trong *hFng 1). N#u &et i tGng Gc lnLoUing 7; null haV 7; tha& chi#u #n &et i
tGng cK ki3u 5? 7i/u kh2cv &et InvalidCastException sH Gc Ch2t sinh.
%/c ,- ,ng nhau
*2c 7C ch4a nh?ng th;nh .i9nv .; nh?ng th;nh .i9n n;V cK th3 7; &et 7C kh2c cK ki3u
5o ngi 5ong :nh nghda {us'ri5'fin'5 tVC'}. po .SVv &et 7C Button cK th3 cK &et th;nh
.i9n ca ki3u Locationv .; ki3u Location n;V ch4a th;nh .i9n ca ki3u 5? 7i/u Point. *ui
congv Point cK th3 ch4a ch4a th;nh .i9n ca ki3u int.
*ho #n 7$c n;Vv c2c 7C Gc tBo ra chb 3 5ong cho c2c 7C L9n ngo;iv .; ch4c nqng ca
c2c 7C K nh 7; 7C trG gi$C {h'7C'r c7ass}. *h$ng ta cK th3 :nh nghda &et 7C trG gi$C L9n
trong c2c 7C ngo;i {out'r c7ass}. *2c 7C Gc :nh nghda L9n trong gOi 7; c2c 7C 7ng
{n'st'5 c7ass}v .; 7C ch4a Gc gOi Fn giDn 7; 7C ngo;i.
Nh?ng 7C 7ng L9n trong cK 7Gi 7; cK khD nqng truV cSC #n tht cD c2c th;nh .i9n ca 7C
ngo;i. Met ChFng th4c ca 7C 7ng cK th3 truV cSC #n Li#n th;nh .i9n private ca 7C
ngo;i.
[Fn n?av 7C 7ng L9n trong cK th3 Mn i .i tht cD c2c 7C kh2cv 7C 7ng cK th3 7; private
cho 7C ngo;i.
*ui congv &et 7C 7;& 7ng L9n trong 7; public .; Gc truV cSC L9n trong ChB& .i ca 7C
ngo;i. N#u &et 7C Out'r 7; 7C ngo;iv .; 7C Nested 7; 7C public 7ng L9n trong 7C Out'rv
ch$ng ta cK th3 tha& chi#u #n 7C Tested nh Out'r.Nestedv khi K 7C L9n ngo;i h;nh
eng It nhi`u ging nh &et na&'sCac' haV &et ChB& .i.
2hi +h3u ^i .i ngi 7SC trnh wa.av 7C 7ng nhau trong *@ th ging nh nh?ng 7C
nei static {static inn'r} trong wa.a. "h>ng cK sW tFng 4ng trong *@ .i nh?ng 7C nei
nonstatic {nonstatic inn'r} trong wa.a.
I 56 -.0 sau sH th9& &et 7C 7ng .;o 7C Fraction t9n 7; FractionArtist. *h4c nqng ca 7C
FractionArtis 7; .H &et ChPn s ra &;n hnh. Trong .I 56 n;Vv .i/c .H sH Gc thaV th# LYng
sE 56ng h;& WriteLine Uuht ra &;n hnh conso7'.
89 d: Q(v) Sn d:ng #op #Kng nha>(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
using System.Text;
&'Th()*")+nh
1N=
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
public class Fraction
{
public Fraction( int numerator, int denominator)
{
this.numerator = numerator;
this.denominator = denominator;
}
public override string ToString()
{
StringBuilder s = new StringBuilder();
s.AppendFormat("{0}/{1},numerator, denominator);
return s.ToString();
}
internal class FractionArtist
{
public void Draw( Fraction f)
{
Console.WriteLine("Drawing the numerator {0}, f.numerator);
Console.WriteLine("Drawing the denominator {0}, f.denominator);
}
}
// bin thnh vin private
private int numerator;
private int denominator;
}
public class Tester
{
static void Main()
{
Fraction f1 = new Fraction( 3, 4);
Console.WriteLine("f1: {0}, f1.ToString());
Fraction.FractionArtist fa = new Fraction.FractionArtist();
fa.Draw( f1 );
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
+C Fraction tr9n nKi chung 7; kh>ng cK g thaV i ngoBi trJ .i/c th9& &et 7C 7ng L9n
trong .; 7Gc i &et s ChFng th4c kh>ng thIch hGC trong .I 56 n;V. +C 7ng L9n trong
&'Th()*")+nh
1NA
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
FractionArtist chb cung chC &et ChFng th4c th;nh .i9n 5uV nhhtv ChFng th4c Draw(). ^i`u
th$ .: trong ChFng th4c Draw() truV cSC 5? 7i/u th;nh .i9n private 7; f.numerator .;
f.denominator. [ai .i#n th;nh .i9n private n;V sH kh>ng cho ChgC truV cSC n#u
FractionArtist kh>ng ChDi 7; 7C 7ng L9n trong ca 7C Fraction.
+u ] 7; trong h;& Main() khi khai L2o &et th3 hi/n ca 7C 7ng L9n trongv ch$ng ta ChDi
U2c nhSn t9n ca 7C L9n ngo;iv t4c 7; 7C Fractionu
Fraction.FractionArtist fa = new Fraction.FractionArtist();
ThS& chI khi 7C FractionArtist 7; publicv th ChB& .: ca 7C n;V .cn nY& L9n trong ca 7C
Fraction.
%Pu hSi *7 tr= ,i
CU> hVi 1u *K cmn thi#t ChDi chb :nh tJ khKa override trong ChFng th4c Ch !uV#t ca 7C
5cn Uuht haV kh>ng
0r* #Wi 1) C6f +h3ng ta ph*i 1hai ,o r r-ng t5 1h6a oN'rrid' Noi ph;<ng thP+ ph7 A>y@t
ph;<ng thP+ *o \+7a #op +< sg ] %n trong #op d~n _>Xt(
CU> hVi 2u +C trJu tGng 7; th# n;o *K th3 tBo i tGng cho 7C trJu tGng haV kh>ng
0r* #Wi 2) Lop tr5> t;Hng 1hng +6 sO thO+ thif +,+ ph;<ng thP+ +7a n6 =;H+ tLo ra +hZ #-
hnh thP+f tP+ #- +hZ +6 1hai ,of do Ny ph.n =Mnh nghea rt >Y+ ph*i =;H+ thO+ hiIn g +,+
#op d~n _>Xt t5 #op tr5> t;Hng n-y( Do +hZ #- #op tr5> t;Hngf 1hng +6 sO thO+ thi n%n +h3ng
ta 1hng thi tLo thi hiIn hay tLo =ci t;Hng +ho #op tr5> t;Hng n-y(
CU> hVi Fu *K ChDi khi tBo &et 7C th ChDi k# thJa tJ &et 7C n;o kh>ng
0r* #Wi F) ?hng nhXt thi@t nh; Nyf t>y nhi%n trong C#f th tXt +* +,+ #op =;H+ tLo =iD> ph*i
d~n _>Xt t5 #op R'+t( Cho dC +h3ng +6 =;H+ 1hai ,o t;Wng minh hay 1hng( Do =6 R'+t
#- #op gc+ +7a tXt +* +,+ #op =;H+ _Uy dOng trong C#( MYt =iD> th3 NM #- +,+ 1ii> d #iI> gi,
trM nh; 1ii> ng>y%nf thO+f 1t tO +mng =;H+ d~n _>Xt t5 R'+t(
CU> hVi Gu +C 7ng L9n trong &et 7C 7; nh th# n;o
0r* #Wi G) Lop #Kng %n trong mYt #op hay +En gBi #- #op nYi =;H+ 1hai ,o Noi t5 1h6a
int'rna#f +hPa %n trong phLm Ni +7a mYt #op( Lop nYi +6 thi tr>y +p =;H+ +,+ th-nh Ni%n
priNat' +7a #op m- n6 +hPa %n trong
CU> hVi Q) *K th3 k# thJa tJ &et 7C cF sf Gc .i#t trong ng>n ng? kh2c ng>n ng? *@
0r* #Wi Q) d;H+f mYt trong nhng =^+ t9nh +7a (N/0 #- +,+ #op +6 thi 1@ th5a t5 +,+ #op
=;H+ Ni@t t5 ngn ng 1h,+( Do Nyf trong C# ta +6 thi 1@ th5a mYt #op =;H+ Ni@t t5 ngn
ng 1h,+ +7a (N/0( 8- nhng ngn ng 1h,+ +mng +6 thi 1@ th5a t5 +,+ #op C# m- ta tLo ra(
%Pu hSi th5"
CU> hVi 1) SO =^t iIt h6a =;H+ sn d:ng trong C# thng A>a t9nh gu
CU> hVi 2) ?h,i niIm =a hnh #- gu ?hi n-o th +.n sn d:ng t9nh =a hnhu
CU> hVi F) &Jy _Uy dOng +Uy phUn +Xp +,+ #op =ci t;Hng sa>) '0oyotaf 'Dr'amf
'Spa+yf '4MWf 'Fiatf 'D>Li+hf 'Mayf 'u
&'Th()*")+nh
1NT
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
CU> hVi G) 05 1h6a n'w =;H+ sn d:ng #-m g trong +,+ #opu
CU> hVi Q) MYt ph;<ng thP+ *o trong #op +< sg +6 nhXt thi@t ph*i =;H+ ph7 A>y@t trong #op
d~n _>Xt hay 1hngu
CU> hVi v) Lop tr5> t;Hng +6 +.n thi@t ph*i _Uy dOng hay 1hngu &Jy +ho mYt N9 d: ND mYt
#op tr5> t;Hng +ho mYt sc #op(
CU> hVi w) Lop + #p #- gu C6 thi 1hai ,o prot'+t'd +ho +,+ th-nh Ni%n +7a n6 =;H+
1hngu
CU> hVi x) Lop R'+t +>ng +Xp nhng ph;<ng thP+ n-o m- +,+ #op 1h,+ th;Wng _>y%n 1@
th5a =i sn d:ng(
CU> hVi y) 0h@ n-o #- o_ing N- >no_ingu &Jy +ho i@t hai N9 d: ND A>, trnh n-yu
47i tT-
4-i tp 1) &Jy mg rYng N9 d: trong +h;<ng _Uy dOng th%m +,+ =ci t;Hng 1h,+ 1@ th5a #op
Window nh;) La'#f TextBoxf S+ro##arf too#arf m'n>f(((
4-i tp 2) &Jy _Uy dOng +,+ #op =ci t;Hng trong +U> hVi Ff thi@t #p +,+ A>an hI 1@ th5a dOa
tr%n +Uy 1@ th5a m- Ln _Uy dOng( Mai =ci t;Hng +hZ +.n mYt th>Y+ t9nh #- myNan' =i +ho
i@t t%n +7a n6 \nh; '0oyota th myNam' #- 0oi #a 0oyota(((]( C,+ =ci t;Hng +6 ph;<ng
thP+ Who\] +ho i@t gi, trM myNam' +7a n6( &Jy thO+ thi sO =a hnh tr%n +,+ #op =6( C>ci
+Cng tLo mYt #op 0'st'r Noi h-m Main() =i tLo mYt m*ng +,+ =ci t;Hng 'f =;a t5ng =ci
t;Hng +: thi N-o m*ng =ci t;Hng 'f sa> =6 +ho #^p t5ng =ci t;Hng trong m*ng =i n6 tO gioi
thiI> t%n \bng +,+h gBi h-m Who\] +7a t5ng =ci t;Hng](
4-i tp F) Uy dOng +,+ #op =ci t;Hng hnh hB+ nh;) =iimf =oLn thngf =;Wng trEnf hnh
+h nhtf hnh N>ngf tam gi,+f hnh nh h-nhf hnh thoi( Mai #op +6 +,+ th>Y+ t9nh ri%ng =i
_,+ =Mnh =;H+ hnh N` ii> dipn +7a n6 nh; =oLn thng th +6 =iim =.>f =iim +>ci(((( Mai
#op thO+ thi mYt ph;<ng thP+ Draw\] ph7 A>y@t Draw\] +7a #op +< sg gc+ +7a +,+ hnh m-
n6 d~n _>Xt( &Jy _Uy dOng #op +< sg +7a +,+ #op tr%n N- thO+ thi =a hnh Noi ph;<ng thP+
Draw\]( Sa> =6 tLo #op 0'st'r +Cng Noi h-m Main() =i thn nghiIm =a hnh gicng nh; -i tp
2 g tr%n(
4-i tp G) Ch;<ng trnh sa> =Uy +6 #ai( &Jy sna #ai i%n dM+h N- +hLy +h;<ng trnh( Cho i@t
#Inh n-o gUy ra #ai( 8- ng>y%n nhUn gUy ra #aiu
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
abstract public class Animal
{
public Animal(string name)
{
this.name = name;
}
&'Th()*")+nh
1-0
NgnNgLpTrnhC#
// phong thc tru tong minh ha vic
// da tn ca di tong
abstract public void Who();
// bin thnh vin protected
protected string name;
}
// lp Dog dn xut t lp Animal
public class Dog : Animal
{
// hm khi dung ly hai tham s
public Dog(string name, string color) : base(name)
{
this.color = color;
}
// ph quyt phong thc tru tong Who()
public override void Who( )
{
Console.WriteLine("Gu gu! Toi la {0} co mau long {1}, name, color);
}
// bin private ca lp
private string color;
}
public class Cat : Animal
{
// hm khi dung ly hai tham s
public Cat(string name, int weight) : base(name)
{
this.weight = weight;
}
// ph quyt phong thc tru tong Who()
public override void Who( )
{
Console.WriteLine("Meo meo! Toi la {0} can nang {1}, name, weight);
}
// bin private ca lp
private int weight;
}
public class Tester
&'Th()*")+nh
1-1
NgnNgLpTrnhC#
{
static void Main()
{
Animal[] Arr = new Animal[3];
Arr[0] = new Dog("Lu Lu, "Vang);
Arr[1] = new Cat("Mun, 5);
Arr[2] = new Animal("Noname);
for( int i=0; i <3 ; i++)
{
Arr[i].Who();
}
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
&'Th()*")+nh
1-2
NgnNgLpTrnhC#
C4/Nng 9
NP CHNG TUN T
V= 'ng t5 Q4f6 o+[r6tor
HM tr0 ngn ng .NET Q4<c
V= 'ng to<n t=
To<n t= so s<n4 gpng
To<n t= c4@&_n XZi
C%@ 4ji k gIi tJ+
[ng thi#t k# ca ng>n ng? *@ 7; tht cD c2c 7C 5o ngi 5ong :nh nghda {us'ri
5'fin'5 c7ass's} cK tht cD c2c ch4c nqng ca c2c 7C WFc UPV 5Wng sXn. I 56v giD sE ch$ng
ta :nh nghda &et 7C 3 th3 hi/n &et ChPn s. ^3 D& LDo rYng 7C n;V cK tht cD c2c ch4c
nqng tFng tW nh c2c 7C Gc UPV 5Wng sXnv nghda 7; ch$ng ta cho ChgC thWc hi/n c2c ChgC
to2n s hOc tr9n c2c th3 hi/n ca ChPn s ch$ng ta {nh c2c ChgC to2n ceng ChPn sv nhPn hai
ChPn sv...} .; chuV3n i !ua 7Bi gi?a ChPn s .; ki3u 5? 7i/u UPV 5Wng sXn nh ki3u nguV9n
{int}. pd nhi9n 7; ch$ng ta cK th3 5 5;ng thWc hi/n c2c to2n tE LYng c2ch gOi &et ChFng
th4cv tFng tW nh cPu 7/nh sauu
Fraction theSum = firstFraction.Add( secondFraction );
Mac 5o c2ch thWc hi/n n;V kh>ng sai nhng .` trWc !uan th rht t/ kh>ng Gc tW nhi9n nh
ki3u 5? 7:9u Gc UPV 5Wng sXn. *2ch thWc hi/n sau sH tt hFn rht nhi`u n#u ta thi#t k# WFcu
Fraction theSum = firstFraction + secondFraction;
*2ch thWc hi/n n;V U'& trWc !uan hFn .; ging .i c2ch thWc hi/n ca c2c 7C Gc UPV
5Wng sXnv ging nh khi thWc hi/n ChgC ceng gi?a hai s nguV9n int.
Trong chFng n;V ch$ng ta sH t& hi3u k thuSt th9& c2c to2n tE chuMn .;o ki3u 5? 7i/u 5o
ngi 5ong :nh nghda. ; ch$ng ta sH t& hi3u c2c to2n tE chuV3n i 3 chuV3n i ki3u 5?
7i/u 5o ngi 5ong :nh nghda &et c2ch tng &inh haV ngm& :nh sang c2c ki3u 5? 7i/u
kh2c.
S> 23ng tF khGa o-#rator
Trong ng>n ng? *@v c2c to2n tE 7; c2c ChFng th4c tdnhv gi2 tr: trD .` ca nK th3 hi/n k#t
!uD ca &et to2n tE .; nh?ng tha& s 7; c2c to2n hBng. "hi ch$ng ta tBo &et to2n tE cho &et
N,pCh-ngTo.nT/
1-)
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
7C 7; ch$ng ta z thWc .i/c nBC chng {o.'r7oa5'5} nh?ng to2n tE Kv cng ging nh 7;
ch$ng ta cK th3 nBC chng Lht c4 ChFng th4c th;nh .i9n n;o. po Kv 3 nBC chng to2n tE
ceng {} ch$ng ta cK th3 .i#t nh sauu
public static Fraction operator + ( Fraction lhs, Fraction rhs)
Trong to2n tE tr9n ta cK sW !ui c at t9n ca tha& s 7; lhs .; rhs. Tha& s t9n lhs thaV
th# cho s#'Tt hand sid't t4c 7; to2n hBng L9n tr2iv tFng tW tha& s t9n rhs thaV th# cho sright
hand sid't t4c 7; to2n hBng L9n ChDi.
*$ Ch2C ng>n ng? *@ cho ChgC nBC chng &et to2n tE LYng c2ch .i#t tJ khKa operator
.; th'o sau 7; to2n tE Gc nBC chng. TJ khKa operator 7; &et L sung ChFng th4c
{&'tho5 oC'rator}. Nh .SVv 3 nBC chng to2n tE ceng {} ch$ng ta cK th3 .i#t operator .
"hi ch$ng ta .i#tu
Fraction theSum = firstFraction + secondFraction;
Th to2n tE nBC chng Gc thWc hi/nv .i firstFraction Gc truV`n .;o nh 7; tha& s
mu ti9nv .; secondFraction Gc truV`n .;o nh 7; tha& s th4 hai. "hi trnh Li9n 5:ch gaC
Li3u th4cu
firstFraction + secondFraction
th trnh Li9n 5:ch sH chuV3n Li3u th4c .;ou
Fraction.operator+(firstFraction, secondFraction)
"#t !uD sau khi thWc hi/n 7; &et i tGng Fraction &i Gc trD .`v trong trng hGC
n;V ChgC g2n sH Gc thWc hi/n 3 g2n &et i tGng Fraction cho theSum.
2hi +h3u ^i .i ngi 7SC trnh *v trong ng>n ng? *@ kh>ng th3 tBo Gc to2n tE
nonstaticv .; 5o .SV n9n to2n tE nh: ChPn ChDi 7hV hai to2n hBng.
Z[ tr@ ng9n ng: .NET kh/c
Ng>n ng? *@ cung chC khD nqng cho ChgC nBC chng to2n tE cho c2c 7C &; ch$ng ta UPV
5Wngv thS& chI i`u n;V kh>ng hoac ` cSC rht It trong *o&&on +anguag' SC'cification
{*+S}. Nh?ng ng>n ng? .NET kh2c nh 8.NET th kh>ng h\ trG .i/c nBC chng to2n tEv .;
&et i`u !uan trOng 3 D& LDo 7; 7C ca ch$ng ta ChDi h\ trG c2c ChFng th4c thaV th# cho
ChgC nh?ng ng>n ng? kh2c cK th3 gOi 3 tBo ra c2c hi/u 4ng tFng tW.
po Kv n#u ch$ng ta nBC chng to2n tE {} th ch$ng ta n9n cung chC &et ChFng th4c
Add() cng 7;& cong ch4c nqng 7; ceng hai i tGng. NBC chng to2n tE cK th3 7; &et c$
Ch2C ng_n gOnv nhng nK kh>ng chb 7; ng 5cn cho nh?ng i tGng ca ch$ng ta thi#t 7SC
&et nhi/& .6 Gc a ra.
S> 23ng to/n t>
NBC chng to2n tE cK th3 7;& cho &z ngun ca ch$ng ta trWc !uan .; nh?ng h;nh eng
ca 7C &; ch$ng ta UPV 5Wng ging nh c2c 7C Gc UPV 5Wng sXn. TuV nhi9nv .i/c nBC
chng to2n tE cng cK th3 7;& cho &z ngun Ch4c tBC &et c2ch khK !uDn 7] n#u ch$ng ta Ch2
N,pCh-ngTo.nT/
1-N
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
. c2ch th3 hi/n th>ng thng 3 sE 56ng nh?ng to2n tE. [Bn ch# .i/c sE 56ng toV ti/n c2c
nBC chng to2n tE LYng nh?ng c2ch sE 56ng &i .; nh?ng c2ch ac trng.
I 56v &ac 5o ch$ng ta cK th3 hhC 5cn Lfi .i/c sE 56ng nBC chng to2n tE gia tqng {}
trong 7C Employee 3 gOi &et ChFng th4c gia tqng &4c 7Fng ca nhPn .i9nv i`u n;V cK
th3 '& 7Bi rht nhi`u nhm& 7cn cho c2c 7C c7i'nt truV cSC 7C Employee. L9n trong ca 7C
cn cK th3 cK nhi`u trng thuec tInh s kh2cv nh s tuiv nq& 7;& .i/cv...ta kh>ng th3 5;nh
to2n tE gia tqng 5uV nhht cho th6>c tInh 7Fng Gc. *2ch tt nhht 7; sE 56ng nBC chng to2n
tE &et c2ch hBn ch#v .; chb sE 56ng khi n;o nghda nK r r;ng .; Cho hGC .i c2c to2n tE ca
c2c 7C Gc UPV 5Wng sXn.
"hi thng thWc hi/n .i/c nBC chng to2n tE so s2nh LYng {==} 3 ki3& tra hai i tGng
U'& cK LYng nhau haV kh>ng. Ng>n ng? *@ nhhn &Bnh rYng n#u ch$ng ta thWc hi/n nBC
chng to2n tE LYngv th ch$ng ta ChDi nBC chng to2n tE ngh:ch .i to2n tE LYng 7; to2n tE
kh>ng LYng {!=}. TFng tWv khi nBC chng to2n tE nhQ hFn {<} th cng ChDi tBo to2n tE {>}
th'o tJng caC. *ng nh to2n tE {>=} i tFng 4ng .i to2n tE {<=}.
Th'o sau 7; &et s 7uSt Gc 2C 56ng 3 thWc hi/n nBC chng to2n tEu
^:nh nghda nh?ng to2n tE trong ki3u 5? 7i/u gi2 tr:v ki3u 5o ng>n ng? UPV 5Wng sXn.
*ung chC nh?ng ChFng th4c nBC chng to2n tE chb L9n trong ca 7C nFi &; nh?ng
ChFng th4c Gc :nh nghda.
SE 56ng t9n .; nh?ng kI h:9u !ui c Gc &> tD trong *o&&on +anguag' SC'cii
fication {*+S}.
SE 56ng nBC chng to2n tE trong trng hGC k#t !uD trD .` ca to2n tE 7; thSt sW r r;ng.
I 56v nh thWc hi/n to2n tE trJ {i} gi?a &et gi2 tr: Time .i &et gi2 tr: Time kh2c 7; &et
to2n tE cK ] nghda. TuV nhi9nv n#u ch$ng ta thWc hi/n to2n tE or haV to2n tE and gi?a hai i
tGng Time th k#t !uD ho;n to;n kh>ng cK nghda g h#t.
NBC chng to2n tE cK tInh chht i U4ng. I 56v n#u ch$ng ta nBC chng to2n tE LYng
{==} th cng ChDi nBC chng to2n tE kh>ng LYng {!=}. po K khi thWc hi/n to2n tE cK tInh
chht i U4ng th ChDi thWc hi/n to2n tE i U4ng 7Bi nhu < .i >v <= .i >=.
1hDi cung chC c2c ChFng th4c thaV th# cho to2n tE Gc nBC chng. ^a s c2c ng>n
ng? i`u kh>ng h\ trG nBC chng to2n tE. nguV9n 5o n;V n9n ch$ng ta ChDi thWc thi
c2c ChFng th4c th4 hai cK cong ch4c nqng .i c2c to2n tE. *o&&on +anguag'
SC'cification {*+S} i hQi ChDi thWc hi/n ChFng th4c th4 hai tFng 4ng.
8Dng 0.1 sau trnh L;V c2c to2n tE cong .i Li3u tGng ca to2n tE .; c2c t9n ca ChFng
th4c thaV th# c2c to2n tE.
ai_@ t/0ng Tbn +4/Nng t4`c t46& t43 Tbn to<n t=
+ Add To2n tE ceng
- Subtract To2n tE trJ
* Multiply To2n tE nhPn
N,pCh-ngTo.nT/
1--
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
/ Divide To2n tE chia
% Mod To2n tE chia 7hV 5
Xor To2n tE or 7oBi trJ
BitwiseAnd To2n tE and nh: ChPn
BitwiseOr To2n tE or nh: ChPn
And To2n tE and 7ogic
Or To2n tE or 7ogic
= Assign To2n tE g2n
<< LeftShift To2n tE 5:ch tr2i
>> RightShift To2n tE 5:ch ChDi
== Equals To2n tE so s2nh LYng
> Compare To2n tE so s2nh 7n hFn
< Compare To2n tE so s2nh nhQ hFn
!= Compare To2n tE so s2nh kh>ng LYng
>= Compare To2n tE so s2nh 7n hFn haV
LYng
<= Compare To2n tE so s2nh nhQ hFn haV
LYng
*= Multiply To2n tE nhPn ri g2n trf 7Bi
-= Subtract To2n tE trJ ri g2n trf 7Bi
= Xor To2n tE or 7oBi trJ ri g2n 7Bi
<<= LeftShift To2n tE 5:ch tr2i ri g2n 7Bi
%= Mod To2n tE chia 5 ri g2n 7Bi
+= Add To2n tE ceng ri g2n 7Bi
= BitwiseAnd To2n tE and ri g2n 7Bi
= BitwiseOr To2n tE or ri g2n 7Bi
/= Divide To2n tE chia ri g2n
-- Decrement To2n tE giD&
++ Increment To2n tE tqng
- Negate To2n tE Ch :nh &et ng>i
+ Plus To2n tE ceng &et ng>i
OnesComplement To2n tE Lo
4*ng v(1) 06m trt mYt sc to,n tn trong C#(
To/n t> so s/nh IXng
N#u ch$ng ta nBC chng to2n tE LYng {==}v th ch$ng ta cng n9n Ch !uV#t ChFng th4c Do
Equals() Gc cung chC Lfi 7C oLk'ct .; chuV3n 7Bi cho to2n tE LYng thWc hi/n. ^i`u n;V cho
ChgC 7C ca ch$ng ta th3 tFng thIch .i c2c ng>n ng? .NET kh2c kh>ng h\ trG tInh nBC
N,pCh-ngTo.nT/
1-0
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
chng to2n tE nhng h\ trG nBC chng ChFng th4c. Nh?ng 7C %*+ kh>ng sE 56ng nBC
chng to2n tEv nhng .cn &ong Gi 7C ca ch$ng ta thWc hi/n nh?ng ChFng th4c cF LDn
n;V. po K .I 56 7C ArrayList &ong &un ch$ng ta thWc thi ChFng th4c Equals().
+C object thWc thi ChFng th4c Equals{} .i khai L2o sauu
public override bool Equals( object 0 )
8Yng c2ch Ch !uV#t ChFng th4c n;Vv ch$ng ta cho ChgC 7C Fraction h;nh eng &et c2ch
a hnh .i tht cD nh?ng 7C kh2c. 89n trong thPn ca ChFng th4c Equals() ch$ng ta cmn
ChDi D& LDo rYng ch$ng ta ang so s2nh .i &et Fraction kh2cv .; n#u nh ch$ng ta z thWc
thi &et to2n tE so s2nh LYng th cK th3 :nh nghda ChFng th4c Equals() nh sauu
pubic override bool Equals( object o)
{
if ( !(o is Fraction) )
{
return false;
}
return this == (Fraction) o;
}
To2n tE is Gc sE 56ng 3 ki3& tra ki3u ca i tGng 7$c chBV chFng trnh cK tFng thIch
.i to2n hBng trong trng hGC n;V 7; Fraction. po o 7; Fraction n9n to2n tE is sH trD .` true.
To/n t> chuL0n i
*@ cho ChgC chuV3n i tJ ki3u int sang ki3u long &et c2ch ngm& :nhv .; cng cho ChgC
ch$ng ta chuV3n tJ ki3u long sang ki3u int &et c2ch tng &inh. i/c chuV3n tJ ki3u int sang
ki3u long Gc thWc hi/n ngm& :nh Lfi . hi3n nhi9n Lht k gi2 tr: n;o ca int cng Gc
thIch hGC .i kIch thc ca ki3u long. TuV nhi9nv i`u ngGc 7Biv t4c 7; chuV3n tJ ki3u long
sang ki3u int ChDi Gc thWc hi/n &et c2ch tng &inh {sE 56ng gC ki3u} Lfi . ta cK th3 &ht
th>ng tin khi gi2 tr: ca Li#n ki3u long .Gt !u2 kIch thc ca int 7u trong Le nhu
int myInt = 5;
long myLong;
myLong = myInt; // ngm dinh
myInt = (int) myLong; // tng minh
*h$ng ta &un thWc hi/n .i/c chuV3n i n;V .i 7C Fraction. "hi a ra &et s nguV9nv
ch$ng ta cK th3 h\ trG ngm& :nh 3 chuV3n i th;nh &et ChPn s Lfi . Lht k gi2 tr:
nguV9n n;o ta cng cK th3 chuV3n th;nh gi2 tr: ChPn s .i &cu s 7; 1 nh {24 == 24/1}.
"hi a ra &et ChPn sv ch$ng ta &un cung chC &et sW chuV3n i tng &inh trf 7Bi &et
s nguV9nv i`u n;V cK th3 hi3u 7; &et s th>ng tin sH L: &ht. po Kv khi ch$ng ta chuV3n
ChPn s TN th;nh gi2 tr: nguV9n 7; 2.
N,pCh-ngTo.nT/
1-=
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
TJ ng? ngm& :nh {i&C7icit} Gc sE 56ng khi &et chuV3n i D& th;nh c>ng &; kh>ng
&ht Lht c4 th>ng tin n;o ca 5? 7i/u nguV9n thV. Trng hGC ngGc 7Biv tng &inh
{'UC7icit} kh>ng D& LDo LDo to;n 5? 7i/u sau khi chuV3n i 5o K .i/c n;V sH Gc thWc
hi/n &et c2ch c>ng khai.
I 56 0.1 sH trnh L;V 5i PV &inh hOa c2ch th4c &; ch$ng ta cK th3 thWc thi chuV3n i
tng &inh .; ngm& :nhv .; thWc thi &et .;i c2c to2n tE ca 7C Fraction. Trong .I 56 n;V
ch$ng ta sE 56ng h;& Console.WriteLine() 3 Uuht th>ng i/C ra &;n hnh &inh hOa khi
ChFng th4c Gc thi h;nh. TuV nhi9n c2ch tt nhht 7; ch$ng ta sE 56ng trnh L'Lug 3 th'o
5i tJng Lc thWc thi c2c 7/nh haV nhDV .;o tJng ChFng th4c Gc gOi.
89 d: v(1) dMnh nghea +,+ +h>yin =ki N- to,n tn +ho #op Fra+tion(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
public class Fraction
{
public Fraction(int numerator,int denominator)
{
Console.WriteLine(In Fraction Constructor( int, int) );
this.numerator = numerator;
this.denominator = denominator;
}
public Fraction(int wholeNumber)
{
Console.WriLine(In Fraction Constructor( int ));
numerator = wholeNumber;
denominator = 1;
}
public static implicit operator Fraction( int theInt )
{
Console.WriteLine( In implicit conversion to Fraction);
return new Fraction( theInt );
}
public static explicit operator int( Fraction theFraction )
{
Console.WriteLine(In explicit conversion to int);
return theFraction.numerator / theFraction.denominator;
}
public static bool operator == ( Fraction lhs, Fraction rhs)
{
N,pCh-ngTo.nT/
1-A
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
Console.WriteLine(In operator ==);
if ( lhs.numerator == rhs.numerator
lhs.denominator == rhs.denominator )
{
return true;
}
// thuc hin khi hai phn s khng bng nhau
return false;
}
public static bool operator != ( Fraction lhs, Fraction rhs)
{
Console.WriteLine(In operator !=);
return !( lhs == rhs );
}
public override bool Equals( object o )
{
Console.WriteLine(In method Equals);
if ( !(o is Fraction ))
{
return false;
}
return this == ( Fraction ) o;
}
public static Fraction operator+( Fraction lhs, Fraction rhs )
{
Console.WriteLine(In operator +);
if (lhs.denominator == rhs.denominator )
{
return new Fraction( lhs.numerator + rhs.numerator, lhs.denominator );
}
//thuc hin khi hai mu s khng bng nhau
int firstProduct = lhs.numerator * rhs.denominator;
int secondProduct = rhs.numerator * lhs.denominator;
return new Fraction( firstProduct + secondProduct,
lhs.denominator * rhs.denominator);
}
public override string ToString()
{
N,pCh-ngTo.nT/
1-T
NgnNgLpTrnhC#
string s = numerator.ToString() + / + denominator.ToString();
return s;
}
//bin thnh vin lu t s v mu s
private int numerator;
private int denominator;
}
public class Tester
{
static void Main()
{
Fraction f1 = new Fraction( 3, 4);
Console.WriteLine(f1:{0},f1.ToString());
Fraction f2 = new Fraction( 2, 4);
Console.WriteLine(f2:{0},f2.ToString());
Fraction f3 = f1 + f2;
Console.WriteLine(f1 + f2 = f3:{0},f3.ToString());
Fraction f4 = f3 + 5;
Console.WriteLine(f4 = f3 + 5:{0},f4.ToString());
Fraction f5 = new Fraction( 2, 4);
if( f5 == f2 )
{
Console.WriteLine(f5:{0}==f2:{1},
f5.ToString(), f2.ToString());
}
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
+C Fraction L_t mu .i hai h;& khfi 5Wngu &et h;& 7hV &et tE s .; &cu sv cn h;& kia
7hV chb 7hV &et s 7;& tE s. Ti#C sau hai Le khfi 5Wng 7; hai to2n tE chuV3n i. To2n tE
chuV3n i mu ti9n chuV3n &et s nguV9n sang &et ChPn su
public static implicit operator Fraction( int theInt )
{
return new Fraction( theInt);
N,pCh-ngTo.nT/
100
NgnNgLpTrnhC#
}
SW chuV3n i n;V Gc thWc hi/n &et c2ch ngm& :nh Lfi . Lht c4 s nguV9n n;o cng cK
th3 Gc chuV3n th;nh &et ChPn s LYng c2ch thi#t 7SC tE s LYng gi2 tr: s nguV9n .; &cu s
cK gi2 tr: 7; 1. i/c thWc hi/n n;V cK th3 giao 7Bi cho ChFng th4c khfi 5Wng 7hV &et tha& s.
To2n tE chuV3n i th4 hai Gc thWc hi/n &et c2ch tng &inhv chuV3n tJ &et Fraction ra
&et s nguV9nu
public static explicit operator int( Fraction theFraction )
{
return theFraction.numerator / theFraction.denominator;
}
8fi . trong .I 56 n;V sE 56ng ChgC chia nguV9nv ChgC chia n;V sH c_t LQ Chmn ChPn chb 7hV
Chmn nguV9n. po .SV n#u ChPn s cK gi2 tr: 7; 101- th k#t !uD s nguV9n trD .` 7; 1. Met s
c2c ChgC chuV3n i tt hFn LYng c2ch sE 56ng 7;& trn s.
Ti#C th'o sau 7; to2n tE so s2nh LYng {==} .; to2n tE so s2nh kh>ng LYng {}. *h$ng ta n9n
nh rYng khi thWc thi to2n tE so s2nh LYng th cng ChDi thWc thi to2n tE so s2nh kh>ng LYng.
*h$ng ta z :nh nghda gi2 tr: LYng nhau gi?a hai Fraction khi tE s LYng tE s .; &cu s
LYng &cu s. i 56v nh hai ChPn s 3/4 .; 6/8 th kh>ng Gc so s2nh 7; LYng nhau. Met
7mn n?av &et sW thWc thi tt hFn 7; ti giDn tE s .; &cu s khi K 6/8 sH Fn giDn th;nh 3/4
.; khi K so s2nh hai ChPn s sH LYng nhau.
Trong 7C n;V ch$ng ta cng thWc thi Ch !uV#t ChFng th4c Equals() ca 7C objectv 5o K
i tGng Fraction ca ch$ng ta cK th3 Gc i UE &et c2ch a hnh .i Lht c4 i tGng
kh2c. Trong Chmn thWc thi ca ChFng th4c ch$ng ta V th2c .i/c so s2nh 7Bi cho to2n tE so
s2nh LYng c2ch gOi to2n tE {==}.
+C Fraction cK th3 thWc thi h#t tht cD c2c to2n tE s hOc nh cengv trJv nhPnv chia. TuV nhi9nv
trong ChB& .i nhQ hC ca &inh hOa ch$ng ta chb thWc thi to2n tE cengv .; thS& chI ChgC
ceng f PV Gc thWc hi/n Fn giDn nhht. *h$ng ta thE nhn 7Biv n#u hai &cu s LYng nhau th
ta ceng tE su
public static Fraction operator + ( Fraction lhs, Fraction rhs)
{
if ( lhs.denominator == rhs.denominator)
{
return new Fraction( lhs.numerator + rhs.numerator, lhs.denominator);
}
}
N#u &cu s kh>ng cong nhauv th ch$ng ta thWc hi/n nhPn chgou
int firstProduct = lhs.numerator * rhs.denominator;
int secondProduct = rhs.numerator * lhs.denominator;
return new Fraction( firstProduct + secondProduct, lhs.denominator *
N,pCh-ngTo.nT/
101
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
rhs.denominator);
*ui cong 7; sW Ch !uV#t ChFng th4c ToString() ca 7C objectv ChFng th4c &i n;V thWc
hi/n .i#t Uuht ra nei 5ung ca ChPn s 5i 5Bng u tE s &cu su
public override string ToString()
{
string s = numerator.ToString() + "/ + denominator.ToString();
return s;
}
*h$ng ta tBo &et chu\i &i LYng c2ch gOi ChFng th4c ToString() ca numerator. po
numerator 7; &et i tGngv n9n trnh Li9n 5:ch sH ngm& :nh thWc hi/n LoUing s nguV9n
numerator .; sau K gOi ChFng th4c ToString()v trD .` &et chu\i th3 hi/n gi2 tr: ca s
nguV9n numerator. Sau K ta ni chu\i .i st .; cui cong 7; chu\i th3 hi/n gi2 tr: ca &cu
s.
i 7C Fraction z tBo rav ch$ng ta thWc hi/n ki3& tra 7C n;V. ^mu ti9n ch$ng ta tBo ra hai
ChPn s 3/4v .; 2/4u
Fraction f1 = new Fraction( 3, 4);
Console.WriteLine(f1:{0},f1.ToString());
Fraction f2 = new Fraction( 2, 4);
Console.WriteLine(f2:{0},f2.ToString());
"#t !uD thWc hi/n c2c 7/nh tr9n nh sauu
In Fraction Constructor(int, int)
f1: 3/4
In Fraction Constructor(int, int)
f2: 2/4
po trong ChFng Ch4c khfi 5Wng ca 7C Fraction ch$ng ta cK gOi h;& WriteLine() 3 Uuht
ra th>ng tin Le khfi 5Wng n9n khi tBo i tGng {n'(} th cng c2c th>ng tin n;V sH Gc h:3n
th:.
png ti#C th'o trong h;& Main() sH gOi to2n tE cengv PV 7; ChFng th4c tdnh. M6c Ich ca
to2n tE n;V 7; ceng hai ChPn s .; trD .` &et ChPn s &i 7; tng ca hai ChPn s a .;ou
Fraction f3 = f1 + f2;
Console.WriteLine("f1 + f2 = f3: {0}, f3.ToString());
[ai cPu 7/nh tr9n sH cho ra k#t !uD nh sauu
In operator +
In Fraction Constructor( int, int)
f1 + f2 = f3: 5/4
To2n tE Gc gOi trc sau K #n ChFng th4c khfi 5Wng ca i tGng f3. 1hFng th4c
khfi 5Wng n;V 7hV hai tha& s nguV9n 3 tBo tE s .; &cu s ca ChPn s &i f3.
N,pCh-ngTo.nT/
102
NgnNgLpTrnhC#
[ai cPu 7/nh ti#C th'o ceng &et gi2 tr: nguV9n .;o ChPn s f3 .; g2n k#t !uD &i .` cho ChPn
s &i f4u
Fraction f4 = f3 + 5;
Console.WriteLine("f3 + 5 = f4: {0}, f4.ToString());
"#t !uD Gc trnh L;V th'o th4 tW sauu
In implicit conversion to Fraction
In Fraction Construction(int)
In operator+
In Fraction Constructor(int, int)
f3 + 5 = f4: 25/4
2hi +h3u rYng to2n tE chuV3n i ngm& :nh Gc gOi khi chuV3n - th;nh &et ChPn s.
1hPn s Gc tBo ra tJ to2n tE chuV3n i ngm& :nh n;V gOi ChFng th4c khfi 5Wng &et
tha& s 3 tBo ChPn s &i -1. 1hPn s &i n;V sH Gc chuV3n th;nh to2n hBng trong ChgC
ceng .i ChPn s f3 .; k#t !uD trD .` 7; ChPn s f4 7; tng ca hai ChPn s tr9n.
ThE nghi/& cui cong 7; tBo &et ChPn s &i f5v ri sau K gOi to2n tE nBC chng so s2nh
LYng 3 ki3& tra U'& hai ChPn s cK LYng nhau haV kh>ng.
%Pu hSi *7 tr= ,i
CU> hVi 1u *K ChDi khi UPV 5Wng c2c 7C ch$ng ta chb cmn 5ong nBC chng to2n tE .i c2c
ch4c nqng tInh to2n
0r* #Wi 1) d3ng #- nh; Nyf NiI+ thO+ hiIn nLp +hKng to,n tn rXt tO nhi%n N- trO+ A>an( 0>y
nhi%n mYt sc ngn ng (N/0 nh; 84(N/0 1hng ha trH NiI+ nLp +hKng to,n tn n%nf tct nhXt
n@> m>cn +ho #op trong C# +7a +h3ng ta +6 thi =;H+ gBi t5 ngn ng 1h,+ 1hng ha trH nLp
+hKng to,n tn th n%n _Uy dOng +,+ ph;<ng thP+ t;<ng =;<ng =i thO+ hiIn +Cng +hP+ njng
nh;) "ddf S>f M>#f((
CU> hVi 2u Nh?ng i`u 7u ] n;o khi sE 56ng nBC chng to2n tE trong &et 7C
0r* #Wi 2) N6i +h>ng #- 1hi n-o tht +.n thi@t N- 9t gUy ra sO nh.m #~n( 89 d: nh; ta _Uy dOng
#op /mp#oy'' +6 nhiD> th>Y+ t9nh sc nh; #;<ngf thUm ni%nf t>ki((( Ch3ng ta m>cn _Uy dOng
to,n tn {{ +ho #;<ng nh;ng +6 thi #-m nh.m #~n Noi NiI+ tjng sc njm +ng t,+f hay tjng
t>ki( Do Ny NiI+ sn d:ng nLp +hKng to,n tn +mng ph*i +Un nhr+ tr,nh gUy nh.m #~n( 0ct
nhXt #- sn d:ng trong #op +6 9t th>Y+ t9nh sc(((
CU> hVi Fu "hi UPV 5Wng to2n tE so s2nh th cK ChDi chb cmn 5ong to2n tE so s2nh LYng
0r* #Wi F) d3ng #- n@> +.n dCng to,n tn so s,nh n-o th +h3ng ta +6 thi +hZ tLo ra d>y nhXt
to,n tn so s,nh =6 m- thi( 0>y nhi%nf tct h<n #- +h3ng ta +mng n%n _Uy dOng th%m to,n tn so
s,nh 1h,+ nh;) so s,nh 1h,+f so s,nh nhV h<nf so s,nh #on h<n(((8iI+ n-y s` #-m +ho #op +7a
+h3ng ta ho-n thiIn h<n(
%Pu hSi th5"
N,pCh-ngTo.nT/
10)
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
CU> hVi 1) ?hi n-o sn d:ng to,n tn +h>yin =kiu 0h@ n-o #- +h>yin =ki t;Wng minh N-
+h>yin =ki ng.m =Mnhu
CU> hVi 2) C6 thi tLo ra 1t hiIn to,n tn ri%ng +7a ta N- thO+ thi nLp +hKng to,n tn =6 hay
1hngu
CU> hVi F) C6 ao nhi%> to,n tn m- (N/0 A>y =Mnhu ?t hiI> +7a t5ng to,n tnu
47i tT-
4-i tp 1) &Jy ti@p t:+ ph,t triin #op Fra+tion trong N9 d: +7a +h;<ng bng +,+h th%m +,+
to,n tn 1h,+ nh; tr5f nhUnf +hiaf so s,nh(((
4-i tp 2) Uy dOng #op =iim trong 1hng gian hai +hiD>f Noi +,+ to,n tn +Yngf tr5f nhUnf
+hia(
4-i tp F) 0;<ng tO nh; -i tp 2 nh;ng =iim nbm trong 1hng gian F +hiD>(
4-i tp G) Uy dOng #op sc ph3+ \sc *o] Noi +,+ phqp to,n +Yngf tr5f nhUnf +hia(
N,pCh-ngTo.nT/
10N
NgnNgLpTrnhC#
C4/Nng >
C TRC
-cn4 ng4u6 G~t c?@ trAc
T:o c?@ trAc
C?@ trAc )I G~t Qi_@ gi< trc
Gii g~ Q4Ri '(ng Grc Xcn4
T:o c?@ trAc Q4ng gii n[\
C%@ 4ji k gIi tJ+
*hu tr$c 7; ki3u 5? 7i/u Fn giDn 5o ngi 5ong :nh nghdav kIch thc nhQ 5ong 3 thaV th#
cho 7C. Nh?ng chu tr$c th tFng tW nh 7C cng ch4a c2c ChFng th4cv nh?ng thuec tInhv
c2c trngv c2c to2n tEv c2c ki3u 5? 7i/u 7ng L9n trong .; Le chb &6c {in5'U'r}.
*K &et s sW kh2c nhau !uan trOng gi?a nh?ng 7C .; chu tr$c. I 56v chu tr$c th kh>ng h\
trG k# thJa .; Le hV ging nh ki3u 7C. Met i`u !uan trOng nhht 7; trong khi 7C 7; ki3u
5? 7i/u tha& chi#uv th chu tr$c 7; ki3u 5? 7:9u gi2 tr: {*hFng ) z thDo 7uSn .` ki3u 5? 7i/u
tha& chi#u .; ki3u 5? 7i/u gi2 tr:}. po K chu tr$c thng 5ong 3 th3 hi3n c2c i tGng
kh>ng i hQi &et ng? nghda tha& chi#uv haV &et 7C nhQ &; khi at .;o trong stack th cK
7Gi hFn 7; at trong Le nh h'aC.
Met sW nhSn Ugt Gc r$t ra 7; ch$ng ta chb n9n sE 56ng nh?ng chu tr$c chb .i nh?ng ki3u
5? 7i/u nhQv .; nh?ng h;nh .i haV thuec tInh ca nK ging nh c2c ki3u 5? 7i/u Gc UPV
5Wng sXn.
*hu tr$c cK hi/u !uD khi ch$ng ta sE 56ng ch$ng trong &Dng Le nh {*hFng T}. TuV nhi9nv
chu tr$c sH kg& hi/u !uD khi ch$ng ta sE 56ng 5Bng tSC hGC {co77'ctions}. TSC hGC Gc UPV
5Wng hng ti c2c ki3u 5? 7i/u tha& chi#u.
Trong chFng n;V ch$ng ta sH t& hi3u c2c :nh nghda .; 7;& .i/c .i ki3u chu tr$c .; c2ch
sE 56ng Le khfi 5Wng 3 khfi tBo nh?ng gi2 tr: ca chu tr$c.
]6nh nghca "Ht ciu trc
*$ Ch2C 3 khai L2o &et chu tr$c cng tFng tW nh c2ch khai L2o &et 7Cu
[thuc tnh] [b sung truy cp] struct <tn cu trc> [: danh sch giao din]
{
[thnh vin ca cu trc]
C01Tr2c
10-
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
}
I 56 =.1 sau &inh hOa c2ch tBo &et chu tr$c. "i3u Location th3 hi/n &et i3& trong
kh>ng gian hai chi`u. +u ] rYng chu tr$c Location n;V Gc khai L2o chInh U2c nh khi thWc
hi/n khai L2o .i &et 7Cv ngoBi trJ .i/c sE 56ng tJ khKa struct. Ngo;i ra cng 7u ] rYng
h;& khfi 5Wng ca Location 7hV hai s nguV9n .; g2n nh?ng gi2 tr: ca ch$ng cho c2c Li#n
th;nh .i9nv x .; y. TOa e x .; y ca Location Gc khai L2o nh 7; thuec tInh.
89 d: w(1 0Lo mYt +X> tr3+(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
public struct Location
{
public Location( int xCoordinate, int yCoordinate)
{
xVal = xCoordinate;
yVal = yCoordinate;
}
public int x
{
get
{
return xVal;
}
set
{
xVal = value;
}
}
public int y
{
get
{
return yVal;
}
set
{
yVal = value;
}
}
C01Tr2c
100
la mot tu khoa
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
public override string ToString()
{
return (String.Format("{0}, {1}, xVal, yVal));
}
// thuc tnh private lu toa d x, y
private int xVal;
private int yVal;
}
public class Tester
{
public void myFunc( Location loc)
{
loc.x = 50;
loc.y = 100;
Console.WriteLine("Loc1 location: {0}, loc);
}
static void Main()
{
Location loc1 = new Location( 200, 300);
Console.WriteLine("Loc1 location: {0}, loc1);
Tester t = new Tester();
t.myFunc( loc1 );
Console.WriteLine("Loc1 location: {0}, loc1);
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
"h>ng ging nh nh?ng 7Cv chu tr$c kh>ng h\ trG .i/c thJa k#. *h$ng Gc thJa k# ngm&
:nh tJ 7C object {tFng tW nh tht cD c2c ki3u 5? 7i/u trong *@v Lao g& c2c ki3u 5? 7i/u
UPV 5Wng sXn} nhng kh>ng th3 k# thJa tJ c2c 7C kh2c haV chu tr$c kh2c. *hu tr$c cng
Gc ngm& :nh 7; sealedv i`u n;V cK ] nghda 7; kh>ng cK 7C n;o haV Lht c4 chu tr$c n;o
cK th3 5cn Uuht tJ nK. TuV nhi9nv cng ging nh c2c 7Cv chu tr$c cK th3 thWc thi nhi`u giao
5i/n. Sau PV 7; &et s sW kh2c nhau n?a 7;u
"h>ng cK Le hV .; Le khfi tBo &ac :nh toV chOnu Nh?ng chu tr$c kh>ng cK Le hV .;
cng kh>ng cK Le khfi tBo &ac :nh kh>ng tha& s toV chOn. N#u ch$ng ta kh>ng cung
chC Lht c4 Le khfi tBo n;o th chu tr$c sH Gc cung chC &et Le khfi tBo &ac :nhv khi K
gi2 tr: 0 sH Gc thi#t 7SC cho tht cD c2c 5? 7i/u th;nh .i9n haV nh?ng gi2 tr: &ac :nh
tFng 4ng cho tJng ki3u 5? 7i/u {LDng N.2}. N#u ch$ng ta cung chC Lht c4 Le khfi 5Wng
n;o th ch$ng ta ChDi khfi tBo tht cD c2c trng trong chu tr$c.
C01Tr2c
10=
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
"h>ng cho ChgC khfi tBou ch$ng ta kh>ng th3 khfi tBo c2c trng th3 hi/n {instanc'
fi'75s} trong chu tr$cv 5o K oBn &z ngun sau sH Q4ng 40+ )Cu
private int xVal = 20;
private int yVal = 50;
&ac 5o i`u n;V thWc hi/n tt i .i 7C.
*hu tr$c Gc thi#t k# hng ti Fn giDn .; gOn nh. Trong khi c2c 5? 7i/u th;nh .i9n
private h\ trG .i/c ch' 5hu 5? 7i/u .; sW Kng gKi. Met .;i ngi 7SC trnh cK cD& gi2c rYng
i`u n;V Ch2 hQng chu tr$c. [O tBo &et 5? 7i/u th;nh .i9n publicv 5o .SV Fn giDn thWc thi
&et chu tr$c. Nh?ng ngi 7SC trnh kh2c cK cD& gi2c rYng nh?ng thuec tInh cung chC &et
giao 5i/n r r;ngv Fn giDn .; .i/c thWc hi/n 7SC trnh tt i hQi ChDi ch' 5hu 5? 7i/u thS&
chI .i 5? 7i/u rht Fn giDn. *h$ng ta sH chOn c2ch n;ov nKi chung 7; Ch6 thuec .;o !uan n/&
thi#t k# ca tJng ngi 7SC trnh. po chOn c2ch n;o th ng>n ng? *@ cng h\ trG cD hai c2ch
ti#C cSn.
T<o ciu trc
*h$ng ta tBo &et th3 hi/n ca chu tr$c LYng c2ch sE 56ng tJ khKa new trong cPu 7/nh
g2nv nh khi ch$ng ta tBo &et i tGng ca 7C. Nh trong .I 56 =.1v 7C Tester tBo &et th3
hi/n ca Location nh sauu
Location loc1 = new Location( 200, 300);
PV &et th3 hi/n &i t9n 7; loc1 .; nK Gc truV`n hai gi2 tr: 7; 200 .; )00.
%iu trc ,7 "Ht ki0u gi/ tr6
1hmn :nh nghda ca 7C Tester trong .I 56 =.1 tr9n Lao g& &et i tGng Location 7; loc1
Gc tBo .i gi2 tr: 7; 200 .; )00. png 7/nh sau sH gOi thWc hi/n Le khfi tBo ca chu tr$c
Locationu
Location loc1 = new Location( 200, 300);
Sau K ChFng t4c WriteLine() Gc gOiu
Console.WriteLine("Loc1 location: {0}, loc1);
pd nhi9n 7; WriteLine ch Gi &et i tGngv nhng Location 7; &et chu tr$c {&et ki3u gi2
tr:}. Trnh Li9n 5:ch sH tW eng LoUing chu tr$c {cng ging nh trnh Li9n 5:ch z 7;& .i
c2c ki3u 5? 7i/u gi2 tr: kh2c}. Met i tGng sau khi LoUing Gc truV`n .;o cho ChFng th4c
WriteLine(). Ti#C sau K 7; ChFng th4c ToString() Gc gOi tr9n i tGng LoUing n;Vv 5o
chu tr$c ngm& :nh k# thJa tJ 7C objectv .; nK cng cK th3 2C 4ng sW a hnhv LYng c2ch
Ch !uV#t c2c ChFng th4c nh Lht c4 i tGng n;o kh2c.
Loc1 location 200, 300
TuV nhi9n 5o chu tr$c 7; ki3u gi2 tr:v n9n khi truV`n .;o trong &et h;&v th ch$ng chb truV`n
gi2 tr: .;o h;&. *ng nh ta thhV f 5ng 7/nh k# ti#Cv khi K &et i tGng Location Gc
truV`n .;o ChFng th4c myFunc()u
t.myFunc( loc1 );
C01Tr2c
10A
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
Trong ChFng th4c myFunc() hai gi2 tr: &i Gc g2n cho x .; yv sau K gi2 tr: &i sH Gc
Uuht ra &;n hnhu
Loc1 location: 50, 100
"hi ChFng th4c myFunc() trD .` cho h;& gOi { Main()} .; ch$ng ta gOi ti#C ChFng th4c
WriteLine() &et 7mn n?a th gi2 tr: kh>ng thaV iu
Loc1 location: 200, 300
Nh .SV chu tr$c Gc truV`n .;o h;& nh &et i tGng gi2 tr:v .; &et LDn sao sH Gc tBo
L9n trong ChFng th4c myFunc(). N#u ch$ng ta thE i khai L2o ca Location 7; class nh
sauu
public class Location
Sau K chBV 7Bi chFng trnh th cK k#t !uDu
Loc1 location: 200, 3000
In myFunc loc: 50, 100
Loc1 location: 50, 100
+$c n;V Location 7; &et i tGng tha& chi#u n9n khi truV`n .;o ChFng th4c myFunc() th
.i/c g2n gi2 tr: &i cho x .; y i`u 7;& thaV i i tGng Location.
YQi IH khei 2Vng "_c 6nh
Nh ` cSC f Chmn trcv n#u ch$ng ta kh>ng tBo Le khfi 5Wng th &et Le khfi 5Wng &ac
:nh ngm& :nh sH Gc trnh Li9n 5:ch tBo ra. *h$ng ta cK th3 nhn thhV i`u n;V n#u LQ Le
khfi 5Wng tBo rau
/*public Location( int xCoordinate , int yCoordinate)
{
xVal = xCoordinate;
yVal = yCoordinate;
}
*/
.; ta thaV 5ng 7/nh mu ti9n trong h;& Main() tBo Location cK hai tha& s LYng cPu 7/nh tBo
kh>ng tha& s nh sauu
//Location loc1 = new Location( 200, 300)
Location loc1 = new Location();
8fi . 7$c n;V kh>ng cK ChFng th4c khfi 5Wng n;o khai L2ov &et ChFng th4c khfi 5Wng
ngm& :nh sH Gc gOi. "#t !uD khi thWc hi/n ging nh sauu
Loc1 location 0, 0
In myFunc loc: 50, 100
Loc1 location: 0, 0
8e khfi tBo &ac :nh z thi#t 7SC tht cD c2c Li#n th;nh .i9n .i gi2 tr: 0.
C01Tr2c
10T
NgnNgLpTrnhC#
2hi +h3u ^i .i 7SC trnh .i9n * 7u ]v trong ng>n ng? *@v tJ khKa new kh>ng ChDi
7u>n 7u>n tBo i tGng tr9n Le nh h'aC. *2c 7C th Gc tBo ra tr9n h'aCv trong khi c2c chu
tr$c th Gc tBo tr9n stack. Ngo;i rav khi new Gc LQ !ua {sH L;n ti#C trong Chmn sau}v th
Le khfi 5Wng sH kh>ng Gc gOi. po ng>n ng? *@ V9u cmu ChDi cK ChgC g2n trc khi sE
56ngv ch$ng ta ChDi khfi tBo tng &inh tht cD c2c Li#n th;nh .i9n trc khi sE 56ng ch$ng
trong chu tr$c.
T<o ciu trc kh9ng gQi n#$
8fi . Location 7; &et chu tr$c kh>ng ChDi 7; 7Cv 5o K c2c th3 hi/n ca nK sH Gc tBo
trong stack. Trong .I 56 =.1 khi to2n tE new Gc gOiu
Location loc1 = new Location( 200, 300);
k#t !uD &et i tGng Location Gc tBo tr9n stack.
TuV nhi9nv to2n tE new gOi Le khfi 5Wng ca 7C Locationv kh>ng ging nh .i &et 7Cv
chu tr$c cK th3 Gc tBo ra &; kh>ng cmn ChDi gOi to2n tE new. ^i`u n;V ging nh c2c Li#n
ca c2c ki3u 5? 7i/u Gc UPV 5Wng sXn {nh intv longv charv..} Gc tBo ra. I 56 =.2 sau
&inh hOa .i/c tBo &et chu tr$c kh>ng sE 56ng to2n tE new.
2hi +h3u ^PV 7; &et sW khuV#n c2ov trong .I 56 sau ch$ng ta &inh hOa c2ch tBo &et chu
tr$c &; kh>ng ChDi sE 56ng to2n tE new Lfi . cK sW kh2c nhau gi?a *@ .; ng>n ng? *
.; sW kh2c nhau n;V chInh 7; c2ch ng>n ng? *@ i UE .i nh?ng 7C kh2c nh?ng chu tr$c.
TuV nhi9nv .i/c tBo &et chu tr$c &; kh>ng 5ong tJ khKa new sH kh>ng cK 7Gi .; cK th3 tBo
&et chFng trnh khK hi3uv ti`& Mn nhi`u 7\iv .; khK 5uV tr. *hFng trnh hOa sau sH kh>ng
Gc khuV#n khIch.
89 d: w(2) 0Lo mYt +X> tr3+ m- 1hng sn d:ng n'w(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
public struct Location
{
public Location( int xCoordinate, int yCoordinate)
{
xVal = xCoordinate;
yVal = yCoordinate;
}
public int x
{
get
{
return xVal;
}
C01Tr2c
1=0
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
set
{
xVal = value;
}
}
public int y
{
get
{
return yVal;
}
set
{
yVal = value;
}
}
public override string ToString()
{
return (string.Format("{0} ,{1}, xVal, yVal));
}
// bin thnh vin lu ta d x, y
public int xVal;
public int yVal;
}
public class Tester
{
static void Main()
{
Location loc1;
loc1.xVal = 100;
loc1.yVal = 250;
Console.WriteLine("loc1);
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Trong .I 56 =.2 ch$ng ta khfi tBo Li#n th;nh .i9n &et c2ch trWc ti#Cv trc khi gOi Lht c4
ChFng th4c n;o ca loc1 .; trc khi truV`n i tGng cho ChFng th4c WriteLine()u
loc1.xVal = 100;
C01Tr2c
1=1
NgnNgLpTrnhC#
loc2.yVal = 250;
N#u ch$ng ta thE LQ &et 7/nh g2n .; Li9n 5:ch 7Biu
static void Main()
{
Location loc1;
loc1.xVal = 100;
//loc1.yVal = 250;
Console.WriteLine( loc1 );
}
*h$ng ta sH nhSn &et 7\i Li9n 5:ch nh sauu
Use of unassigned local variable `loc1
Met khi &; ch$ng ta z g2n tht cD c2c gi2 tr: ca chu tr$cv ch$ng ta cK th3 truV cSC gi2 tr:
th>ng !ua thuec tInh x .; thuec tInh yu
static void Main()
{
Location loc1;
// gn cho bin thnh vin
loc1.xVal = 100;
loc1.yVal = 250;
// s dng thuc tnh
loc1.x = 300;
loc1.y = 400;
Console.WriteLine( loc1 );
}
[zV cMn thSn .i .i/c sE 56ng c2c thuec tInh. Mac 5o chu tr$c cho ChgC ch$ng ta h\ trG Kng
gKi LYng .i/c thi#t 7SC thuec tInh private cho c2c Li#n th;nh .i9n. TuV nhi9n LDn thPn thuec
tInh thSt sW 7; ChFng th4c th;nh .i9nv.; ch$ng ta kh>ng th3 gOi Lht c4 ChFng th4c th;nh
.i9n n;o cho #n khi ch$ng ta khfi tBo tht cD c2c Li#n th;nh .i9n.
Nh .I 56 tr9n ta thi#t 7SC thuec tInh truV cSC ca hai Li#n th;nh .i9n xVal .; yVal 7; public
. ch$ng ta ChDi khfi tBo gi2 tr: ca hai Li#n th;nh .i9n n;V L9n ngo;i ca chu tr$cv trc khi
c2c thuec tInh Gc sE 56ng.
%Pu hSi *7 tr= ,i
CU> hVi 1u *K sW kh2c nhau gi?a chu tr$c .; 7C
0r* #Wi 1) d3ng +6 mYt sc sO 1h,+ nha> gia +X> tr3+ N- #op( Nh; =J =D +p trong #t th>y@t
th #op #- 1ii> d #iI> tham +hi@> +En +X> tr3+ #- 1ii> d #iI> gi, trM( diD> n-y =;H+ _'m #-
sO 1h,+ nha> +jn *n gia +X> tr3+ N- #op( Ngo-i ra +X> tr3+ +mng 1hng +ho phqp +6 h-m
h7y N- tLo Y 1hgi dOng 1hng tham sc t;Wng minh( CX> tr3+ +mng 1h,+ #op #- +X> tr3+ #-
C01Tr2c
1=2
NgnNgLpTrnhC#
1ii> + #p t;Wng minhf tP+ #- 1hng +ho phqp 1@ th5a t5 n6( 8- n6 +mng 1hng 1@ th5a =;H+
t5 Xt +P #op n-o 1h,+( M^+ nhi%nf +,+ +X> tr3+ N~n 1@ th5a t5 R'+t nh; Xt +P 1ii> d
#iI> gi, trM n-o 1h,+ trong C#z(
CU> hVi 2u Trong hai 5Bng &Dng .; tSC hGC th 7Bi n;o ch4a chu tr$c tt hFn
0r* #Wi 2) CX> tr3+ +6 hiI> A>* 1hi sn d:ng trong m*ng h<n #- #;> +h3ng d;oi dLng tp hHp(
DLng tp hHp tct Noi 1ii> d #iI> tham +hi@>(
CU> hVi Fu *hu tr$c Gc 7u tr? f Pu
0r* #Wi F) CX> tr3+ nh; =J =D +p #- 1ii> d #iI> gi, trM n%n n6 =;H+ #;> tr tr%n sta+1 +7a
+h;<ng trnh( Ng;H+ Noi 1ii> tham +hi@> =;H+ =^t tr%n h'ap(
CU> hVi Gu "hi truV`n chu tr$c cho &et ChFng th4c th 5i hnh th4c n;o
0r* #Wi G) Do #- 1ii> gi, trM n%n 1hi tr>yDn mYt =ci t;Hng +X> tr3+ +ho mYt ph;<ng thP+ th
n6 =;H+ tr>yDn d;oi dLng tham trM +hP 1hng ph*i tham +hi@>(
CU> hVi Qu SV 7;& th# n;o truV`n chu tr$c 5i 5Bng tha& chi#u cho &et ChFng th4c
0r* #Wi Q) Cmng gicng nh; tr>yDn tham +hi@> mYt 1ii> gi, trM nh; intf #ongf +har( 0a 1hai ,o
1h6a r'T +ho +,+ tham sc 1ii> +X> tr3+( 8- 1hi gBi ph;<ng thP+ th th%m t5 1h6a r'T N-o
tr;o+ =ci m:+ +X> tr3+ =;H+ tr>yDn N-o(
%Pu hSi th5"
CU> hVi 1) Ch3ng ta +6 thi 1hgi tLo gi, trM an =.> +ho +,+ i@n th-nh Ni%n +7a n6 nh; %n
d;oi =;H+ 1hngu N@> 1hng =;H+ tLi saou
struct myStruct
{
private int mNum = 100;
....
}
CU> hVi 2) SO 1h,+ nha> gia 1ii> d #iI> tham +hi@> N- 1ii> d #iI> gi, trMu
CU> hVi F) SO 1h,+ nha> gia Y 1hgi dOng +7a +X> tr3+ N- Y 1hgi dOng +7a #opu
CU> hVi G) C6 nhXt thi@t ph*i dCng t5 1h6a n'w =i tLo =ci t;Hng 1ii> +X> tr3+ hay 1hngu
N@> 1hng th +En +,+h n-o 1h,+ nau
CU> hVi Q) >, trnh o_ing N- >no_ing +6 dipn ra Noi mYt =ci t;Hng #- 1ii> +X> tr3+ hay
1hngu
47i tT-
4-i tp 1) Ch;<ng trnh sa> =Uy +6 #ai( &Jy sna #aif i%n dM+hf N- +hLy +h;<ng trnh( doLn
#Inh n-o gUy ra #aiu
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
struct TheStruct
{
C01Tr2c
1=)
khong cho phep trong struct
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
public int x;
public TheStruct()
{
x = 10;
}
}
class TestClass
{
public static void structtaker( TheStruct s)
{
s.x = 5;
}
public static void Main()
{
TheStruct a = new TheStruct();
a.x = 1;
structtaker( a);
Console.WriteLine(a.x = {0}, a.x);
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
4-i tp 2) &Jy t9nh 1@t A>* bng tay m- +h;<ng trnh sa> _>Xt ra( Sa> =6 i%n dM+h N- +hLy
+h;<ng trnh =i =ci s,nh 1@t A>*(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
class TheClass
{
public int x;
}
struct TheStruct
{
public int x;
}
class TestClass
{
public static void structtaker( TheStruct s)
{
C01Tr2c
1=N
NgnNgLpTrnhC#
s.x = 5;
}
public static void classtaker(TheClass c)
{
c.x = 5;
}
public static void Main()
{
TheStruct a = new TheStruct();
TheClass b = new TheClass();
a.x = 1;
b.x = 1;
structtaker( a);
classtaker(b);
Console.WriteLine(a.x = {0}, a.x);
Console.WriteLine(b.x = {0}, b.x);
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
4-i tp F) &Jy sna +h;<ng trnh trong -i tp 2 =i 1@t A>* gi, trM a(_ +7a =ci t;Hng a =;H+
thay =ki 1hi ra 1hVi h-m str>+tta1'r\]( DCng tr>yDn tham +hi@> +ho +X> tr3+(
C01Tr2c
1=-
NgnNgLpTrnhC#
C4/Nng B
THyC THT GTU xTN
T4(c t4i gi6o 'iCn
T4(c t4i n4i!@ gi6o 'iCn
MR r~ng gi6o 'iCn
23t 40+ c<c gi6o 'iCn
Tr@& cJ+ +4/Nng t4`c gi6o 'iCn
G<n X.i t/0ng c4o G~t gi6o 'iCn
To<n t= is
To<n t= 6s
Gi6o 'iCn X.i )J+ H*i tr5@ t/0ng
T4(c t4i +4O P@&3t gi6o 'iCn
T4(c t4i gi6o 'iCn t/Yng Gin4
L(6 c4in t4_ 4iCn +4/Nng t4`c gi6o 'iCn
n t4In4 Hibn
C%@ 4ji k gIi tJ+
Ziao 5i/n 7; r;ng Luecv giao c D& LDo cho c2c 7C haV c2c chu tr$c sH thWc hi/n
&et i`u g K. "hi &et 7C thWc thi &et giao 5i/nv th 7C n;V L2o cho c2c th;nh Chmn c7i'nt
Li#t rYng 7C n;V cK h\ trG c2c ChFng th4cv thuec tInhv sW ki/n .; c2c chb &6c khai L2o trong
giao 5i/n.
Met giao 5i/n a ra &et sW thaV th# cho c2c 7C trJu tGng 3 tBo ra c2c sW r;ng
Luec gi?a nh?ng 7C .; c2c th;nh Chmn c7i'nt ca nK. Nh?ng r;ng Luec n;V Gc khai L2o
LYng c2ch sE 56ng tJ khKa interfacev tJ khKa n;V khai L2o &et ki3u 5? 7i/u tha& chi#u 3
Kng gKi c2c r;ng Luec.
Met giao 5i/n th ging nh &et 7C chb ch4a c2c ChFng th4c trJu tGng. Met 7C
trJu tGng Gc 5ong 7;& 7C cF sf cho &et hO c2c 7C 5cn Uuht tJ nK. Trong khi giao 5i/n
7; sW tren 7cn .i c2c cPV k# thJa kh2c.
ThcThi3i)oDi4n
1=0
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
"hi &et 7C thWc thi &et giao 5i/nv 7C n;V ChDi thWc thi tht cD c2c ChFng th4c ca
giao 5i/n. ^PV 7; &et L_t Luec &; c2c 7C ChDi thWc hi/n.
Trong chFng n;V ch$ng ta sH thDo 7uSn c2ch tBov thWc thi .; sE 56ng c2c giao 5i/n.
Ngo;i ra ch$ng ta cng sH L;n ti c2ch thWc thi nhi`u giao 5i/n cong .i c2ch k#t hGC .; &f
reng giao 5i/n. ; cui cong 7; c2c &inh hOa 5ong 3 ki3& tra khi &et 7C thWc thi &et giao
5i/n.
ThVc thi "Ht giao 2i+n
*$ Ch2C 3 :nh nghda &et giao 5i/n nh sauu
[thuc tnh] [b sung truy cp] interface <tn giao din> [: danh sch co s]
{
<phn thn giao din>
}
1hmn thuec tInh ch$ng ta sH ` cSC sau. Th;nh Chmn L sung truV cSC Lao g&u
publicv privatev protectedv internalv .; protected internal z Gc nKi #n trong
*hFng Nv ] nghda tFng tW nh c2c L sung truV cSC ca 7C.
Th'o sau tJ khKa interface 7; t9n ca giao 5i/n. Th>ng thng t9n ca giao 5i/n
Gc L_t mu .i tJ < hoa {i`u n;V kh>ng L_t Luec nhng .i/c at t9n nh .SV rht r r;ng .;
5 hi3uv tr2nh nhm& 7cn .i c2c th;nh Chmn kh2c}. I 56 &et s giao 5i/n cK t9n nh sauu
IStorablev ICloneablev...
panh s2ch cF sf 7; 5anh s2ch c2c giao 5i/n &; giao 5i/n n;V &f rengv Chmn n;V sH
Gc trnh L;V trong Chmn thWc thi nhi`u giao 5i/n ca chFng. 1hmn thPn ca giao 5i/n chInh
7; Chmn thWc thi giao 5i/n sH Gc trnh L;V L9n 5i.
ZiD sE ch$ng ta &un tBo &et giao 5i/n nhY& &> tD nh?ng ChFng th4c .; thuec tInh
ca &et 7C cmn thi#t 3 7u tr? .; truV cSC tJ &et cF sf 5? 7i/u haV c2c th;nh Chmn 7u tr?
5? 7i/u kh2c nh 7; &et tSC tin. *h$ng ta !uV#t :nh gOi giao 5i/n n;V 7; IStorage.
Trong giao 5i/n n;V ch$ng ta U2c nhSn hai ChFng th4cu Read() .; Write()v khai L2o
n;V sH Gc Uuht hi/n trong Chmn thPn ca giao 5i/n nh sauu
interface IStorable
{
void Read();
void Write(object);
}
M6c Ich ca &et giao 5i/n 7; 3 :nh nghda nh?ng khD nqng &; ch$ng ta &un cK
trong &et 7C. I 56v ch$ng ta cK th3 tBo &et 7C t9n 7; Documentv 7C n;V 7u tr? c2c 5?
7i/u trong cF sf 5? 7i/uv 5o K ch$ng ta !uV#t :nh 7C n;V n;V thWc thi giao 5i/n IStorable.
^3 7;& Gc i`u n;Vv ch$ng ta sE 56ng c$ Ch2C ging nh .i/c tBo &et 7C &i
Document Gc thJa k# tJ IStorable LYng 5ong 5hu hai chh& {u} .; th'o sau 7; t9n giao 5i/nu
ThcThi3i)oDi4n
1==
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
public class Document : IStorable
{
public void Read()
{
....
}
public void Write()
{
....
}
}
8PV gi tr2ch nhi/& ca ch$ng tav .i .ai tr 7; ngi UPV 5Wng 7C Document ChDi
cung chC &et thWc thi cK ] nghda thWc sW cho nh?ng ChFng th4c ca giao 5i/n IStorable.
*h$ng ta ChDi thWc thi tht cD c2c ChFng th4c ca giao 5i/nv n#u kh>ng trnh Li9n 5:ch sH L2o
&et 7\i. Sau PV 7; oBn chFng trnh &inh hOa .i/c UPV 5Wng 7C Document thWc thi giao
5i/n IStorable.
89 d: x(1) Sn d:ng mYt giao diIn(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
// khai bo giao din
interface IStorable
{
// giao din khng khai bo b sung truy cp
// phong thc l public v khng thuc thi
void Read();
void Write(object obj);
int Status
{
get;
set;
}
}
// tao mt lp thuc thi giao din IStorable
public class Document : IStorable
{
public Document( string s)
{
Console.WriteLine("Creating document with: {0}, s);
ThcThi3i)oDi4n
1=A
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
}
// thuc thi phong thc Read()
public void Read()
{
Console.WriteLine("Implement the Read Method for IStorable);
}
// thuc thi phong thc Write
public void Write( object o)
{
Console.WriteLine("Impleting the Write Method for IStorable);
}
// thuc thi thuc tnh
public int Status
{
get
{
return status;
}
set
{
status = value;
}
}
// lu tr gi tri thuc tnh
private int status = 0;
}
public class Tester
{
static void Main()
{
// truy cp phong thc trong di tong Document
Document doc = new Document("Test Document);
doc.Status = -1;
doc.Read();
Console.WriteLine("Document Status: {0}, doc.Status);
// gn cho mt giao din v s dng giao din
IStorable isDoc = (IStorable) doc;
isDoc.Status = 0;
ThcThi3i)oDi4n
1=T
NgnNgLpTrnhC#
isDoc.Read();
Console.WriteLine("IStorable Status: {0}, isDoc.Status);
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Kt qu=
Creating docu#ent with: est Docu#ent
8#&!e#enting the <ead Method "or 8Storab!e
Docu#ent Status: -1
8#&!e#enting the <ead Method "or 8Storab!e
8Storab!e Status: 0
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
I 56 A.1 :nh nghda &et giao 5i/n IStorable .i hai ChFng th4c Read()v Write() .; &et
thuec tInh t9n 7; Status cK ki3u 7; s nguV9n.. +u ] rYng trong Chmn khai L2o thuec tInh
kh>ng cK Chmn thWc thi cho get() .; set() &; chb Fn giDn 7; khai L2o cK h;nh .i 7; get() .;
set()u
int Status { get; set;}
Ngo;i ra Chmn :nh nghda c2c ChFng th4c ca giao 5i/n kh>ng cK Chmn L sung truV cSC {.I
56 nhu publicv protectedv internalv private}. i/c cung chC c2c L sung truV cSC sH tBo ra
&et 7\i. Nh?ng ChFng th4c ca giao 5i/n Gc ngm& :nh 7; public . giao 5i/n 7; nh?ng
r;ng Luec Gc sE 56ng Lfi nh?ng 7C kh2c. *h$ng ta kh>ng th3 tBo &et th3 hi/n ca giao
5i/nv thaV .;o K ch$ng ta sH tBo th3 hi/n ca 7C cK thWc thi giao 5i/n.
Met 7C thWc thi giao 5i/n ChDi 2C 4ng mV .; chInh U2c c2c r;ng Luec z khai L2o trong
giao 5i/n. +C Document ChDi cung chC cD hai ChFng th4c Read() .; Write() cong .i
thuec tInh Status. TuV nhi9n c2ch thWc hi/n nh?ng V9u cmu n;V ho;n to;n Ch6 thuec .;o 7C
Document. Mac 5o IStorage chb ra rYng 7C Document ChDi cK &et thuec tInh 7; Status
nhng nK kh>ng Li#t haV cng kh>ng !uan tP& #n .i/c 7C Document 7u tr? trBng th2i thSt
sW ca c2c Li#n th;nh .i9nv haV .i/c t& ki#& trong cF sf 5? 7i/u. Nh?ng chi ti#t n;V Ch6
thuec .;o Chmn thWc thi ca 7C.
ThVc thi nhiCu giao 2i+n
Trong ng>n ng? *@ cho ChgC ch$ng ta thWc thi nhi`u hFn &et giao 5i/n. I 56v n#u 7C
Document cK th3 Gc 7u tr? .; 5? 7i/u cng Gc ngn. *h$ng ta cK th3 chOn thWc thi cD hai
giao 5i/n IStorable .; ICompressible. Nh .SV ch$ng ta ChDi thaV i Chmn khai L2o trong
5anh s2ch cF sf 3 chb ra rYng cD hai giao 5i/n i`u Gc thWc thiv sE 56ng 5hu ChMV {v} 3
ChPn c2ch gi?a hai giao 5i/nu
public class Document : IStorable, ICompressible
ThcThi3i)oDi4n
1A0
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
po K Document cng ChDi thWc thi nh?ng ChFng th4c Gc U2c nhSn trong giao 5i/n
ICompressibleu
public void Compress()
{
Console.WriteLine("Implementing the Compress Method);
}
public void Decompress()
{
Console.WriteLine("Implementing the Decompress Method);
}
8 sung th9& Chmn khai L2o giao 5i/n ICompressible .; :nh nghda c2c ChFng th4c ca
giao 5i/n L9n trong 7C Document. Sau khi tBo th3 hi/n 7C Document .; gOi c2c ChFng
th4c tJ giao 5i/n ta cK k#t !uD tFng tW nh sauu
Creating document with: Test Document
Implementing the Read Method for IStorable
Implementing Compress
Me rHng giao 2i+n
*@ cung chC ch4c nqng cho ch$ng ta &f reng &et giao 5i/n z cK LYng c2ch th9& c2c
ChFng th4c .; c2c th;nh .i9n haV L sung c2ch 7;& .i/c cho c2c th;nh .i9n. I 56v ch$ng ta
cK th3 &f reng giao 5i/n ICompressible .i &et giao 5i/n &i 7; ILoggedCompressible.
Ziao 5i/n &i n;V &f reng giao 5i/n c LYng c2ch th9& ChFng th4c ghi 7og c2c 5? 7i/u z
7uu
interface ILoggedCompressible : ICompressible
{
void LogSavedBytes();
}
*2c 7C kh2c cK th3 thWc thi tW 5o giao 5i/n ICompressible haV ILoggedCompressible toV
thuec .;o &6c Ich cK cmn th9& ch4c nqng haV kh>ng. N#u &et 7C thWc thi giao 5i/n
ILoggedCompressiblev th 7C n;V ChDi thWc thi tht cD c2c ChFng th4c ca cD hai giao 5i/n
ICompressible .; giao 5i/n ILoggedCompressible. Nh?ng i tGng ca 7C thWc thi giao
5i/n ILoggedCompressible cK th3 Gc g2n cho cD hai giao 5i/n ILoggedCompressible .;
ICompressible.
Kt h@- c/c giao 2i+n
Met c2ch tFng tWv ch$ng ta cK th3 tBo giao 5i/n &i LYng c2ch k#t hGC c2c giao 5i/n
c .; ta cK th3 th9& c2c ChFng th4c haV c2c thuec tInh cho giao 5i/n &i. I 56v ch$ng ta
!uV#t :nh tBo &et giao 5i/n IStorableCompressible. Ziao 5i/n &i n;V sH k#t hGC nh?ng
ThcThi3i)oDi4n
1A1
NgnNgLpTrnhC#
ChFng th4c ca cD hai giao 5i/n .; cng th9& .;o &et ChFng th4c &i 3 7u tr? kIch
thc nguV9n thu ca c2c 5? 7i/u trc khi ngnu
interface IStorableCompressible : IStoreable, ILoggedCompressible
{
void LogOriginalSize();
}
89 d: x(2) Minh hBa NiI+ mg rYng N- 1@t hHp +,+ giao diIn(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
interface IStorable
{
void Read();
void Write(object obj);
int Status { get; set;}
}
// giao din mi
interface ICompressible
{
void Compress();
void Decompress();
}
// m rng giao din
interface ILoggedCompressible : ICompressible
{
void LogSavedBytes();
}
// kt hop giao din
interface IStorableCompressible : IStorable, ILoggedCompressible
{
void LogOriginalSize();
}
interface IEncryptable
{
void Encrypt();
void Decrypt();
}
public class Document : IStorableCompressible, IEncryptable
{
ThcThi3i)oDi4n
1A2
NgnNgLpTrnhC#
// b khi tao lp Document ly mt tham s
public Document( string s)
{
Console.WriteLine("Creating document with: {0}, s);
}
// thuc thi giao din IStorable
public void Read()
{
Console.WriteLine("Implementing the Read Method for IStorable);
}
public void Write( object o)
{
Console.WriteLine("Implementing the Write Method for IStorable);
}
public int Status
{
get
{
return status;
}
set
{
status = value;
}
}
// thuc thi ICompressible
public void Compress()
{
Console.WriteLine("Implementing Compress);
}
public void Decompress()
{
Console.WriteLine("Implementing Decompress);
}
// thuc thi giao din ILoggedCompressible
public void LogSavedBytes()
{
Console.WriteLine("Implementing LogSavedBytes);
ThcThi3i)oDi4n
1A)
NgnNgLpTrnhC#
}
// thuc thi giao din IStorableCompressible
public void LogOriginalSize()
{
Console.WriteLine("Implementing LogOriginalSize);
}
// thuc thi giao din
public void Encrypt()
{
Console.WriteLine("Implementing Encrypt);
}
public void Decrypt()
{
Console.WriteLine("Implementing Decrypt);
}
// bin thnh vin lu d liu cho thuc tnh
private int status = 0;
}
public class Tester
{
public static void Main()
{
// tao di tong document
Document doc = new Document("Test Document);
// gn di tong cho giao din
IStorable isDoc = doc as IStorable;
if ( isDoc != null)
{
isDoc.Read();
}
else
{
Console.WriteLine("IStorable not supported);
}
ICompressible icDoc = doc as ICompressible;
if ( icDoc != null )
{
icDoc.Compress();
ThcThi3i)oDi4n
1AN
NgnNgLpTrnhC#
}
else
{
Console.WriteLine("Compressible not supported);
}
ILoggedCompressible ilcDoc = doc as ILoggedCompressible;
if ( ilcDoc != null )
{
ilcDoc.LogSavedBytes();
ilcDoc.Compress();
// ilcDoc.Read(); // khng th gi doc
}
else
{
Console.WriteLine("LoggedCompressible not supported);
}
IStorableCompressible isc = doc as IStorableCompressible;
if ( isc != null )
{
isc.LogOriginalSize(); // IStorableCompressible
isc.LogSavedBytes(); // ILoggedCompressible
isc.Compress(); // ICompress
isc.Read(); // IStorable
}
else
{
Console.WriteLine("StorableCompressible not supported);
}
IEncryptable ie = doc as IEncryptable;
if ( ie != null )
{
ie.Encrypt();
}
else
{
Console.WriteLine("Encryptable not supported);
}
}
ThcThi3i)oDi4n
1A-
NgnNgLpTrnhC#
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
Creating docu#ent with: est Docu#ent
8#&!e#enting the <ead Method "or 8Storab!e
8#&!e#enting Co#&ress
8#&!e#enting 9ogSa$ed3'tes
8#&!e#enting Co#&ress
8#&!e#enting 9og?rigina!Si@e
8#&!e#enting 9ogSa$e3'tes
8#&!e#enting Co#&ress
8#&!e#enting the <ead Method "or 8Storab!e
8#&!e#enting :ncr'&t
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
I 56 A.2 L_t mu LYng .i/c thWc thi giao 5i/n IStorable .; giao 5i/n ICompressible. Sau K
7; Chmn &f reng #n giao 5i/n ILoggedCompressible ri sau K k#t hGC cD hai .;o giao 5i/n
IStorable*o&Cr'ssiL7'. ; giao 5i/n cui cong trong .I 56 7; IEncrypt.
*hFng trnh Tester tBo i tGng Document &i .; sau K g2n 7mn 7Gt .;o c2c giao 5i/n
kh2c nhau. "hi &et i tGng Gc g2n cho giao 5i/n ILoggedCompressiblev ch$ng ta cK th3
5ong giao 5i/n n;V 3 gOi c2c ChFng th4c ca giao 5i/n ICompressible Lfi . ILogged-
Compressible &f reng .; thJa k# c2c ChFng th4c tJ giao 5i/n cF sfu
ILoggedCompressible ilcDoc = doc as ILoggedCompressible;
if ( ilcDoc != null )
{
ilcDoc.LogSavedBytes();
ilcDoc.Compress();
// ilcDoc.Read(); // khng th gi doc
}
TuV nhi9nv f PV ch$ng ta kh>ng th3 gOi ChFng th4c Read() Lfi . ChFng th4c n;V ca
giao 5i/n IStorablev kh>ng 7i9n !uan #n giao 5i/n n;V. N#u ch$ng ta th9& 7/nh n;V .;o th
chFng trnh sH Li9n 5:ch 7\i.
N#u ch$ng ta g2n .;o giao 5i/n IStorable*o&Cr'ssiL7'v 5o giao 5i/n n;V k#t hGC hai giao
5i/n IStorable .; giao 5i/n ICompressiblev ch$ng ta cK th3 gOi tht cD nh?ng ChFng th4c ca
IStorable*o&Cr'ssiL7'v ICompressiblev .; IStorableu
IStorableCompressible isc = doc as IStorableCompressible;
if ( isc != null )
{
isc.LogOriginalSize(); // IStorableCompressible
ThcThi3i)oDi4n
1A0
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
isc.LogSaveBytes(); // ILoggedCompressible
isc.Compress(); // ICompress
isc.Read(); // IStorable
}
TruL cT- -h?ng th1c giao 2i+n
*h$ng ta cK th3 truV cSC nh?ng th;nh .i9n ca giao 5i/n IStorable nh th3 7; c2c th;nh .i9n
ca 7C Documentu
Document doc = new Document("Test Document);
doc.status = -1;
doc.Read();
haV 7; ta cK th3 tBo th3 hi/n ca giao 5i/n LYng c2ch g2n i tGng Document cho &et ki3u
5? 7i/u giao 5i/nv .; sau K sE 56ng giao 5i/n n;V 3 truV cSC c2c ChFng th4cu
IStorable isDoc = (IStorable) doc;
isDoc.status = 0;
isDoc.Read();
2hi +h3u *ng nh z nKi trc PVv ch$ng ta kh>ng th3 tBo th3 hi/n ca giao 5i/n &et
c2ch trWc ti#C.po K ch$ng ta kh>ng th3 thWc hi/n nh sauu
IStorable isDoc = new IStorable();
TuV nhi9n ch$ng ta cK th3 tBo th3 hi/n ca 7C thWc thi nh sauu
Document doc = new Document("Test Document);
Sau K ch$ng ta cK th3 tBo th3 hi/n ca giao 5i/n LYng c2ch g2n i tGng thWc thi #n ki3u
5? 7i/u giao 5i/nv trong trng hGC n;V 7; IStorableu
IStorable isDoc = (IStorable) doc;
*h$ng ta cK th3 k#t hGC nh?ng Lc tr9n nh sauu
IStorable isDoc = (IStorable) new Document("Test Document);
NKi chungv c2ch thi#t k# tt nhht 7; !uV#t :nh truV cSC nh?ng ChFng th4c ca giao 5i/n
th>ng !ua tha& chi#u ca giao 5i/n. po .SV c2ch tt nhht 7; sE 56ng isDoc.Read()v hFn 7; sE
56ng doc.Read() trong .I 56 trc. TruV cSC th>ng !ua giao 5i/n cho ChgC ch$ng ta i UE
giao 5i/n &et c2ch a hnh. NKi c2ch kh2cv ch$ng ta tBo hai haV nhi`u hFn nh?ng 7C thWc thi
giao 5i/nv .; sau K LYng c2ch truV cSC 7C n;V chb th>ng !ua giao 5i/n.
Y/n i t@ng cho "Ht giao 2i+n
Trong nhi`u trng hGCv ch$ng ta kh>ng Li#t trc &et i tGng cK h\ trG &et giao
5i/n a ra. I 56v giD sE ch$ng ta cK &et tSC hGC nh?ng i tGng Documentv &et .;i i
tGng z Gc 7u tr? .; s cn 7Bi th cha. ; giD sE ch$ng ta z th9& giao 5i/n giao 5i/n
th4 haiv ICompressible cho nh?ng i tGng 3 ngn 5? 7i/u .; truV`n !ua &ai7 nhanh chKngu
interface ICompressible
{
ThcThi3i)oDi4n
1A=
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
void Compress();
void Decompress();
}
N#u a ra &et ki3u Documentv .; ta cng kh>ng Li#t 7; 7C n;V cK h\ trG giao 5i/n
IStorable haV ICompressible hoac cD hai. Ta cK th3 cK oBn chFng trnh sauu
Document doc = new Document("Test Document);
IStorable isDoc = (IStorable) doc;
isDoc.Read();
ICompressible icDoc = (ICompressible) doc;
icDoc.Compress();
N#u Document chb thWc thi giao 5i/n IStorableu
public class Document : IStorable
ChgC g2n cho ICompressible .cn Gc Li9n 5:ch Lfi . ICompressible 7; &et giao 5i/n hGC
7/. TuV nhi9nv 5o ChgC g2n kh>ng hGC 7/ n9n khi chFng trnh chBV th sH tBo ra &et ngoBi 7/
{'Uc'Ction}u
A exception of type System.InvalidCastException was thrown.
1hmn ngoBi 7/ sH Gc trnh L;V trong *hFng 11.
To/n t> is
*h$ng ta &un ki3& tra &et i tGng U'& nK cK h\ trG giao 5i/nv 3 sau K thWc hi/n c2c
ChFng th4c tFng 4ng. Trong ng>n ng? *@ cK hai c2ch 3 thWc hi/n i`u n;V. 1hFng Ch2C
mu ti9n 7; sE 56ng to2n tE is.
*$ Ch2C ca to2n tE is 7;u
<biu thc> is <kiu d liu>
To2n tE is trD .` gi2 tr: tru' n#u Li3u th4c thng 7; ki3u tha& chi#u cK th3 Gc g2n an to;n
#n ki3u 5? 7i/u cmn ki3& tra &; kh>ng Ch2t sinh ra Lht c4 ngoBi 7/ n;o. I 56 A.) &inh hOa
.i/c sE 56ng to2n tE is 3 ki3& tra Document cK thWc thi giao 5i/n IStorable haV
ICompressible.
89 d: x(F) Sn d:ng to,n tn is(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
interface IStorable
{
void Read();
void Write(object obj);
int Status { get; set; }
}
// giao din mi
ThcThi3i)oDi4n
1AA
NgnNgLpTrnhC#
interface ICompressible
{
void Compress();
void Decompress();
}
// Document thuc thi IStorable
public class Document : IStorable
{
public Document( string s)
{
Console.WriteLine("Creating document with: {0}, s);
}
// IStorable
public void Read()
{
Console.WriteLine("Implementing the Read Method for IStorable);
}
// IStorable.WriteLine()
public void Write( object o)
{
Console.WriteLine("Implementing the Write Method for IStorable);
}
// IStorable.Status
public int Status
{
get
{
return status;
}
set
{
status = value;
}
}
// bien thanh vien luu gia tri cua thuoc tinh Status
private int status = 0;
}
public class Tester
ThcThi3i)oDi4n
1AT
NgnNgLpTrnhC#
{
static void Main()
{
Document doc = new Document("Test Document);
// ch gn khi an ton
if ( doc is IStorable )
{
IStorable isDoc = (IStorable) doc;
isDoc.Read();
}
// vic kim tra ny s sai
if ( doc is ICompressible )
{
ICompressible icDoc = (ICompressible) doc;
icDoc.Compress();
}
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Trong .I 56 A.)v h;& Main() 7$c n;V sH thWc hi/n .i/c g2n .i interface khi Gc ki3& tra
hGC 7/. i/c ki3& tra n;V Gc thWc hi/n Lfi cPu 7/nh ifu
if ( doc is IStorable )
8i3u th4c i`u ki/n sH trD .` gi2 tr: true .; ChgC g2n sH Gc thWc hi/n khi i tGng cK thWc
thi giao 5i/n L9n ChDi ca to2n tE is.
TuV nhi9nv .i/c sE 56ng to2n tE is a ra &et .i/c kh>ng cK hi/u !uD. ^3 hi3u Gc i`u n;Vv
ch$ng ta U'& oBn chFng trnh Gc Li9n 5:ch ra &z <+. PV sH cK &et ngoBi 7/ nhQv c2c
5ng L9n 5i 7; sE 56ng h/ thSC 76c ChPnu
"&'00()* isinst "Compressible
IL0028: brfalse.s IL0039
IL002a: ldloc.0
IL002b: castclass ICompressible
IL0030: stloc.2
IL0031: ldloc.2
IL0032: callvirt instance void ICompressible::Compress()
IL003: br.s IL0043
IL0039: ldstr "Compressible not supported
^i`u !uan trOng UDV ra 7; khi ChgC ki3& tra ICompressible f 5ng 2). TJ khKa isinst 7; &z
MS<+ tFng 4ng .i to2n tE is. N#u .i/c ki3& tra i tGng {5oc} $ng ki3u ca ki3u L9n
ThcThi3i)oDi4n
1T0
NgnNgLpTrnhC#
ChDi. Th chFng trnh sH chuV3n #n 5ng 7/nh 2b 3 thWc hi/n ti#C .; castclass Gc gOi.
^i`u kh>ng &aV 7; castcall cng ki3& tra ki3u ca i tGng. po K .i/c ki3& tra sH Gc
thWc hi/n hai 7mn. ZiDi Ch2C hi/u !uD hFn 7; .i/c sE 56ng to2n tE as.
To/n t> as
To2n tE as k#t hGC to2n tE is .; ChgC g2n LYng c2ch mu ti9n ki3& tra hGC 7/ ChgC
g2n {ki3& tra to2n tE is trD .` true} ri sau K ChgC g2n Gc thWc hi/n. N#u ChgC g2n kh>ng
hGC 7/ {khi ChgC g2n trD ` gi2 tr: false}v th to2n tE as trD .` gi2 tr: null.
2hi +h3u TJ khKa null th3 hi/n &et tha& chi#u kh>ng tha& chi#u #n Pu cD {nu77
r'f'r'nc'}. ^i tGng cK gi2 tr: null t4c 7; kh>ng tha& chi#u #n Lht k i tGng n;o.
SE 56ng to2n tE as 3 7oBi LQ .i/c thWc hi/n c2c UE 7] ngoBi 7/. ^ng thi cng ng tr2nh .i/c
thWc hi/n ki3& tra 5 thJa hai 7mn. po .SVv .i/c sE 56ng ti u ca ChgC g2n cho giao 5i/n 7;
sE 56ng as.
*$ Ch2C sE 56ng to2n tE as nh sauu
<biu thc> as <kiu d liu>
^oBn chFng trnh sau thaV th# .i/c sE 56ng to2n tE is LYng to2n tE as .; sau K thWc hi/n
.i/c ki3& tra U'& giao 5i/n Gc g2n cK null haV kh>ngu
static void Main()
{
Document doc = new Document("Test Document);
IStorable isDoc = doc as IStorable;
if ( isDoc != null )
{
isDoc.Read();
}
else
{
Console.WriteLine("IStorable not supported);
}
ICompressible icDoc = doc as ICompressible;
if ( icDoc != null)
{
icDoc.Compress();
}
else
{
Console.WriteLine("Compressible not supported);
}
ThcThi3i)oDi4n
1T1
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
}
Ta cK th3 so s2nh oBn &z <+ sau .i oBn &z <+ sE 56ng to2n tE is trc sH thhV oBn &z
sau cK nhi`u hi/u !uD hFnu
IL0023: isinst ICompressible
IL0028: stloc.2
IL0029: ldloc.2
IL002a: brfalse.s IL0034
IL002c: ldloc.2
IL002d: callvirt instance void ICompressible::Compress()
2hi +h3u N#u &6c Ich ca ch$ng ta 7; ki3& tra &et i tGng cK h\ trG &et giao 5i/n .;
sau K 7; thWc hi/n .i/c g2n cho &et giao 5i/nv th c2ch tt nhht 7; sE 56ng to2n tE as 7; hi/u
!uD nhht. TuV nhi9nv n#u ch$ng ta chb &un ki3& tra ki3u 5? 7i/u .; kh>ng thWc hi/n ChgC
g2n ngaV 7$c K. *K 7H ch$ng ta chb &un thWc hi/n .i/c ki3& tra nhng kh>ng thWc hi/n
.i/c g2nv Fn giDn 7; ch$ng ta &un th9& nK .;o 5anh s2ch n#u ch$ng thWc sW 7; &et giao
5i/n. Trong trng hGC n;Vv sE 56ng to2n tE is 7; c2ch 7Wa chOn tt nhht.
Yiao 2i+n i ,T- *i ,- trFu t@ng
Ziao 5i/n rht ging nh c2c 7C trJu tGng. ThSt .SVv ch$ng ta cK th3 thaV th# khai
L2o ca IStorable trf th;nh &et 7C trJu tGngu
abstract class Storable
{
abstract public void Read();
abstract public void Write();
}
8PV gi 7C Document cK th3 thJa k# tJ 7C trJu tGng IStorablev .; cng kh>ng cK g kh2c
nhi`u so .i .i/c sE 56ng giao 5i/n.
TuV nhi9nv giD sE ch$ng ta &ua &et 7C List tJ &et hzng th4 La .; ch$ng ta &un k#t hGC
.i 7C cK sXn nh Storable. Trong ng>n ng? * ch$ng ta cK th3 tBo ra &et 7C StorableList
k# thJa tJ List .; cD Storable. Nhng trong ng>n ng? *@ ch$ng ta kh>ng th3 7;& Gcv
ch$ng ta kh>ng th3 k# thJa tJ 7C trJu tGng Storable .; tJ 7C List Lfi . trong *@ kh>ng
cho ChgC thWc hi/n a k# thJa tJ nh?ng 7C.
TuV nhi9nv ng>n ng? *@ cho ChgC ch$ng ta thWc thi Lht c4 nh?ng giao 5i/n n;o .; 5cn Uuht
tJ &et 7C cF sf. po Kv LYng c2ch 7;& cho Storable 7; &et giao 5i/nv ch$ng ta cK th3 k#
thJa tJ 7C List .; cng tJ IStorable. Ta cK th3 tBo 7C StorableList nh sauu
public class StorableList : List, IStorable
{
// phong thc List...
.....
ThcThi3i)oDi4n
1T2
lien quan den viec da ke thua
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
public void Read()
{...}
public void Write( object o)
{...}
//....
}
ThVc thi -hd quLt giao 2i+n
"hi thWc thi &et 7C ch$ng ta cK th3 tW 5o 2nh 5hu Lht k haV tht cD c2c ChFng th4c
thWc thi giao 5i/n nh 7; &et ChFng th4c Do. I 56v 7C Document thWc thi giao 5i/n
IStorable .; cK th3 2nh 5hu c2c ChFng th4c Read() .; Write() nh 7; ChFng th4c Do. +C
Document cK th3 Oc .; .i#t nei 5ung ca nK .;o &et ki3u 5? 7i/u File. Nh?ng ngi Ch2t
tri3n sau cK th3 5cn Uuht &et ki3u 5? 7i/u &i tJ 7C Documentv cK th3 7; 7C Note haV 7C
EmailMessagev .; nh?ng ngi n;V &ong &un 7C Note Oc .; .i#t .;o cF sf 5? 7i/u hFn
7; .;o &et tSC tin.
I 56 A.N &f reng tJ .I 56 A.) .; &inh hOa .i/c Ch !uV#t &et thWc thi giao 5i/n. 1hFng
th4c Read() Gc 2nh 5hu nh ChFng th4c Do .; thWc thi Lfi Document.Read() .; cui
cong 7; Gc Ch !uV#t trong ki3u 5? 7i/u Note Gc 5cn Uuht tJ Document.
89 d: x(G) Ph7 A>y@t thO+ thi giao diIn(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
interface IStorable
{
void Read();
void Write();
}
// lp Document don gin thuc thi giao din IStorable
public class Document : IStorable
{
// b khi dung
public Document( string s)
{
Console.WriteLine("Creating document with: {0}, s);
}
// dnh du phong thc Read o
public virtual void Read()
{
Console.WriteLine("Document Read Method for IStorable);
ThcThi3i)oDi4n
1T)
NgnNgLpTrnhC#
}
// khng phi phong thc o
public void Write()
{
Console.WriteLine("Document Write Method for IStorable);
}
}
// lp dn xut t Document
public class Note : Document
{
public Note( string s) : base(s)
{
Console.WriteLine("Creating note with: {0}, s);
}
// ph quyt phong thc Read()
public override void Read()
{
Console.WriteLine("Overriding the Read Method for Note!);
}
// thuc thi mt phong thc Write ring ca lp
public void Write()
{
Console.WriteLine("Implementing the Write method for Note!);
}
}
public class Tester
{
static void Main()
{
// tao mt di tong Document
Document theNote = new Note("Test Note);
IStorable isNote = theNote as IStorable;
if ( isNote != null)
{
isNote.Read();
isNote.Write();
}
Console.WriteLine("\n);
ThcThi3i)oDi4n
1TN
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
// truc tip gi phong thc
theNote.Read();
theNote.Write();
Console.WriteLine("\n);
// tao di tong Note
Note note2 = new Note("Second Test);
IStorable isNote2 = note2 as IStorable;
if ( isNote != null )
{
isNote2.Read();
isNote2.Write();
}
Console.WriteLine("\n);
// truc tip gi phong thc
note2.Read();
note2.Write();
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
Creating docu#ent with: est Note
Creating note with: est Note
?$erriding the <ead #ethod "or Note5
Docu#ent >rite Method "or 8Storab!e
?$erriding the <ead #ethod "or Note5
Docu#ent >rite Method "or 8Storab!e
Creating docu#ent with: Second est
Creating note with: Second est
?$erriding the <ead #ethod "or Note5
Docu#ent >rite Method "or 8Storab!e
?$erriding the <ead #ethod "or Note5
8#&!e#enting the >rite #ethod "or Note5
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Trong .I 56 tr9nv 7C Document thWc thi &et giao 5i/n Fn giDn 7; IStorableu
interface IStorable
ThcThi3i)oDi4n
1T-
NgnNgLpTrnhC#
{
void Read();
void Write();
}
Ngi thi#t k# ca 7C Document thWc thi ChFng th4c Read() 7; ChFng th4c Do nhng
kh>ng tBo ChFng th4c Write() tFng tW nh .SVu
public virtual void Read()
Trong 4ng 56ng th# gii thWcv ch$ng ta cng 2nh 5hu cD hai ChFng th4c n;V 7; ChFng th4c
Do. TuV nhi9n trong .I 56 n;V ch$ng ta &inh hOa .i/c ngi Ch2t tri3n cK th3 toV ] chOn c2c
ChFng th4c Do ca giao 5i/n &; 7C thWc thi.
Met 7C &i Note 5cn Uuht tJ Documentu
public class Note : Document
i/c Ch !uV#t ChFng th4c Read() trong 7C Note 7; kh>ng cmn thi#tv nhng f PV ta tW 5o
7;& i`u n;Vu
public override void Read()
Trong 7C Testerv ChFng th4c Read() .; Write() Gc gOi th'o Ln c2ch sauu
Th>ng !ua 7C cF sf tha& chi#u #n i tGng ca 7C 5cn Uuht
Th>ng !ua &et giao 5i/n tBo tJ 7C cF sf tha& chi#u #n i tGng 5cn Uuht
Th>ng !ua &et i tGng 5cn Uuht
Th>ng !ua giao 5i/n tBo tJ i tGng 5cn Uuht
ThWc hi/n c2ch gOi th4 nhhtv &et tha& chi#u Document Gc tBo rav .; :a chb ca &et i
tGng &i 7; 7C 5cn Uuht Note Gc tBo tr9n h'aC .; g2n trf 7Bi cho i tGng Documentu
Document theNote = new Note("Test Note);
M>t tha& chi#u giao 5i/n Gc tBo ra .; to2n tE as Gc sE 56ng 3 g2n Document cho tha&
chi#u giao 5i/n IStorableu
IStorable isNote = theNote as IStorable;
Sau K gOi ChFng th4c Read() .; Write() th>ng !ua giao 5i/n. "#t Uuht ca ChFng th4c
Read() Gc thWc hi/n &et c2ch a hnh nhng ChFng th4c Write() th kh>ngv 5o K ta cK
k#t Uuht sauu
Overriding the Read method for Note!
Document Write Method for IStorable
1hFng th4c Read() .; Write() cng Gc gOi trWc ti#C tJ LDn thPn i tGngu
theNote.Read();
theNote.Write();
.; &et 7mn n?a ch$ng ta thhV .i/c thWc thi a hnh 7;& .i/cu
Overriding the Read method for Note!
Document Write Method for IStorable
ThcThi3i)oDi4n
1T0
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
Trong trng hGC n;Vv ChFng th4c Read() ca 7C Note Gc gOiv .; ChFng th4c Write()
ca 7C Document Gc gOi.
^3 ch4ng tQ rYng k#t !uD n;V ca ChFng th4c Ch !uV#tv ch$ng ta ti#C t6c tBo i tGng
Note th4 hai .; 7$c n;V ta g2n cho &et tha& chi#u Note. ^i`u n;V Gc sE 56ng 3 &inh hOa
cho nh?ng trng hGC cui cong {gOi th>ng !ua i tGng 5cn Uuht .; gOi th>ng !ua giao
5i/n Gc tBo tJ i tGng 5cn Uuht}u
Note note2 = new Note("Second Test);
Met 7mn n?av khi ch$ng ta g2n cho &et tha& chi#uv ChFng th4c Ch !uV#t Read() Gc gOi.
TuV nhi9nv khi nh?ng ChFng th4c Gc gOi trWc ti#C tJ i tGng Noteu
note2.Read();
note2.Write();
k#t !uD cho ta thhV rYng c2ch ChFng th4c ca Note Gc gOi ch4 kh>ng ChDi ca &et
ChFng th4c Documentu
Overriding the Read method for Note!
Implementing the Write method dor Note!
ThVc thi giao 2i+n tng "inh
Trong .i/c thWc thi giao 5i/n cho ti giv nh?ng 7C thWc thi {trong trng hGC n;V 7;
Document} tBo ra c2c ChFng th4c th;nh .i9n cong k] hi/u .; ki3u trD .` nh 7; ChFng th4c
Gc &> tD trong giao 5i9n. *h$ng ta kh>ng cmn thi#t khai L2o tng &inh rYng PV 7; &et
thWc thi ca &et giao 5i/nv .i/c n;V Gc hi3u ngm& Lfi trnh Li9n 5:ch.
TuV nhi9nv cK .hn ` UDV ra khi &et 7C thWc thi hai giao 5i/n .; cD hai giao 5i/n n;V cK c2c
ChFng th4c cong &et k] hi/u. I 56 A.- tBo ra hai giao 5i/nu IStorable .; ITalk. Sau K thWc
thi ChFng th4c Read() trong giao 5i/n ITalk 3 Oc ra ti#ng nei 5ung ca &et cun s2ch.
"h>ng &aV 7; ChFng th4c n;V sH tranh chhC .i ChFng th4c Read() ca IStorable &;
Document ChDi thWc thi.
8fi . cD hai ChFng th4c IStorable .; ITalk cK cong ChFng th4c Read()v.i/c thWc thi 7C
Document ChDi sE 56ng thWc thi tng &inh cho &\i ChFng th4c. i .i/c thWc thi tng
&inhv 7C thWc thi Document sH khai L2o tng &inh cho &\i ChFng th4cu
void ITalk.Read();
^i`u n;V sH giDi !uV#t .i/c tranh chhCv nhng nK sH tBo ra h;ng 7oBt c2c hi/u 4ng th$ .:.
^mu ti9nv kh>ng cmn thi#t sE 56ng thWc thi tng &inh .i nh?ng ChFng th4c kh2c ca Talku
public void Talk();
. kh>ng cK sW tranh chhC cho n9n ta khai L2o nh th>ng thng.
^i`u !uan trOng 7; c2c ChFng th4c thWc thi tng &inh kh>ng cK L sung truV cSCu
void ITalk.Read();
1hFng th4c n;V Gc hi3u ngm& 7; public.
ThcThi3i)oDi4n
1T=
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
ThSt .SVv &et ChFng th4c Gc khai L2o tng &inh th sH kh>ng Gc khai L2o .i c2c tJ
khKa L sung truV cSCu abstractv virtualv overridev .; new.
Met :`u !uan trOng kh2c 7; ch$ng ta kh>ng th3 truV cSC ChFng th4c thWc thi tng &inh
th>ng !ua chInh i tGng. "hi ch$ng ta .i#tu
theDoc.Read();
Trnh Li9n 5:ch chb hi3u rYng ch$ng ta thWc thi ChFng th4c giao 5i/n ngm& :nh cho
IStorable. *hb &et c2ch 5uV nhht truV cSC c2c ChFng th4c thWc thi tng &inh 7; th>ng !ua
.i/c g2n cho giao 5i/n 3 thWc thiu
ITalk itDoc = theDoc as ITalk;
if ( itDoc != null )
{
itDoc.Read();
}
SE 56ng thWc thi tng &inh Gc 2C 56ng trong .I 56 A.-
89 d: x(Q) 0hO+ thi t;Wng minh(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
interface IStorable
{
void Read();
void Write();
}
interface ITalk
{
void Talk();
void Read();
}
// lp Document thuc thi hai giao din
public class Document : IStorable, ITalk
{
// b khi dung
public Document( string s)
{
Console.WriteLine("Creating document with: {0},s);
}
// tao phong thc o
public virtual void Read()
{
ThcThi3i)oDi4n
1TA
NgnNgLpTrnhC#
Console.WriteLine("Implementing IStorable.Read);
}
// thuc thi bnh thng
public void Write()
{
Console.WriteLine("Implementing IStorable.Write);
}
// thuc thi tng minh
void ITalk.Read()
{
Console.WriteLine("Implementing ITalk.Read);
}
public void Talk()
{
Console.WriteLine("Implementing ITalk.Talk);
}
}
public class Tester
{
static void Main()
{
// tao di tong Document
Document theDoc = new Document("Test Document);
IStorable isDoc = theDoc as IStorable;
if ( isDoc != null )
{
isDoc.Read();
}
ITalk itDoc = theDoc as ITalk;
if ( itDoc != null )
{
itDoc.Read();
}
theDoc.Read();
theDoc.Talk();
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
ThcThi3i)oDi4n
1TT
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
?@t A>*)
Creating docu#ent with: est Docu#ent
8#&!e#enting 8Storab!e.<ead
8#&!e#enting 8a!k.<ead
8#&!e#enting 8Storab!e.<ead
8#&!e#enting 8a!k.a!k
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
&Va chQn *i+c th0 hi+n -h?ng th1c giao 2i+n
Nh?ng ngi thi#t k# 7C cK th3 thu Gc 7Gi khi &et giao 5i/n Gc thWc thi th>ng !ua thWc
thi tng &inh .; kh>ng cho ChgC c2c th;nh Chmn c7i'nt ca 7C truV cSC trJ Chi sE 56ng
th>ng !ua .i/c g2n cho giao 5i/n.
ZiD sE nghda ca i tGng Document chb ra rYng nK thWc thi giao 5i/n IStorablev
nhng kh>ng &un ChFng th4c Read() .; Write() 7; Chmn giao 5i/n public ca 7C
Document. *h$ng ta cK th3 sE 56ng thWc thi tng &inh 3 ch_c ch_n chb cK th3 truV cSC
th>ng !ua .i/c g2n cho giao 5i/n. ^i`u n;V cho ChgC ch$ng ta 7u tr? ng? nghda ca 7C
Document trong khi .cn cK th3 thWc thi Gc giao 5i/n IStorable. N#u th;nh Chmn c7i'nt
&un i tGng thWc thi giao 5i/n IStorablev nK cK th3 thWc hi/n g2n tng &inh cho giao
5i/n 3 gOi c2c ChFng th4c thWc thi giao 5i/n. Nhng khi sE 56ng i tGng Document th
nghda 7; kh>ng cK ChFng th4c Read() .; Write().
ThSt .SVv ch$ng ta cK th3 7Wa chOn th3 hi/n nh?ng ChFng th4c th>ng !ua thWc thi
tng &inhv 5o K ch$ng ta cK th3 trng L;V &et .;i ChFng th4c thWc thi nh 7; &et Chmn
ca 7C Document .; &et s ChFng th4c kh2c th kh>ng. Trong .I 56 A.-v i tGng
Document trng L;V ChFng th4c Talk() nh 7; ChFng th4c ca 7C Documentv nhng
ChFng th4c Talk.Read() chb Gc th3 hi/n th>ng !ua g2n cho giao 5i/n. ThS& chI n#u
IStorable kh>ng cK ChFng th4c Read()v ch$ng ta cng cK th3 chOn thWc thi tng &inh
ChFng th4c Read() 3 ChFng th4c kh>ng Gc th3 hi/n ra L9n ngo;i nh c2c ChFng th4c
ca Document.
*h$ng ta 7u ] rYng . thWc thi giao 5i/n tng &inh ngqn ngJa .i/c sE 56ng tJ khKa
virtualv &et 7C 5cn Uuht cK th3 Gc h\ trG 3 thWc thi 7Bi ChFng th4c. po Kv n#u Note
5cn Uuht tJ Documentv nK cK th3 Gc thWc thi 7Bi ChFng th4c Talk.Read() Lfi . 7C
Document thWc thi ChFng th4c Talk.Read() kh>ng ChDi Do.
nn th7nh *i5n
Ng>n ng? *@ cho ChgC Mn c2c th;nh .i9n ca giao 5i/n. I 56v ch$ng ta cK &et giao 5i/n
IBase .i &et thuec tInh Pu
interface IBase
ThcThi3i)oDi4n
200
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
{
int P { get; set;}
}
.; sau K ch$ng ta 5cn Uuht tJ giao 5i/n n;V ra &et giao 5i/n kh2cv IDerivedv giao 5i/n &i
n;V 7;& Mn thuec tInh P .i &et ChFng th4c &i P():
interface IDerived : IBase
{
new int P();
}
i/c c;i at n;V 7; &et ] tfng ttv LPV gi ch$ng ta cK th3 Mn thuec tInh P trong 7C cF sf.
Met thWc thi ca giao 5i/n 5cn Uuht n;V i hQi ti thi3u &et th;nh .i9n giao 5i/n tng
&inh. *h$ng ta cK th3 sE 56ng thWc thi tng &inh cho thuec tInh ca 7C cF sf hoac ca
ChFng th4c 5cn Uuhtv hoac ch$ng ta cK th3 sE 56ng thWc thi tng &inh cho cD hai. po Kv
La Chi9n LDn Gc .i#t sau `u hGC 7/u
class myClass : IDerived
{
// thuc thi tng minh cho thuc tnh co s
int IBase.p { get{...}}
// thuc thi ngm dinh phong thc dn xut
public int P() {...}
}
class myClass : IDerived
{
// thuc thi ngm dinh cho thuc tnh co s
public int P { get{...}}
// thuc thi tng minh phong thc dn xut
int IDerived.P() {...}
}
class myClass : IDerived
{
// thuc thi tng minh cho thuc tnh co s
int IBase.P { get{...}}
// thuc thi tng minh phong thc dn xut
int IDerived.P(){...}
}
TruL cT- ,- kh9ng cho 2bn Uuit *7 ki0u gi/ tr6
ThcThi3i)oDi4n
201
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
NKi chungv .i/c truV cSC nh?ng ChFng th4c ca &et giao 5i/n th>ng !ua .i/c g2n cho giao
5i/n th thng Gc thIch hFn. NgoBi trJ i .i ki3u gi2 tr: {nh chu tr$c} hoac .i c2c 7C
kh>ng cho 5cn Uuht {s'a7'5 c7ass}. Trong trng hGC n;Vv c2ch u chueng hFn 7; gOi ChFng
th4c giao 5i/n th>ng !ua i tGng.
"hi ch$ng ta thWc thi &et giao 5i/n trong &et chu tr$cv 7; ch$ng ta ang thWc thi nK trong &et
ki3u 5? 7i/u gi2 tr:. "hi ch$ng ta g2n cho &>t tha& chi#u giao 5i/nv cK &et LoUing ngm& :nh
ca i tGng. *hng &aV khi ch$ng ta sE 56ng giao 5i/n 3 L sung i tGngv nK 7; &et i
tGng z LoUingv kh>ng ChDi 7; i tGng nguV9n thV cmn Gc L sung. a hFn n?av n#u
ch$ng ta thaV i ki3u 5? 7i/u gi2 tr:v th ki3u 5? 7i/u Gc LoUing .cn kh>ng thaV i. I 56
A.0 tBo ra &et chu tr$c .; thWc thi &et giao 5i/n IStorable .; &inh hOa .i/c LoUing ngm&
:nh khi g2n &et chu tr$c cho &et tha& chi#u giao 5i/n.
89 d: x(v) 0ham +hi@> =@n 1ii> d #iI> gi, trM(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
// khai bo mt giao din don
interface IStorable
{
void Read();
int Status { get; set;}
}
// thuc thi thng qua cu trc
public struct myStruct : IStorable
{
public void Read()
{
Console.WriteLine("Implementing IStorable.Read);
}
public int Status
{
get
{
return status;
}
set
{
status = value;
}
}
ThcThi3i)oDi4n
202
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
// bin thnh vin lu gi tri thuc tnh Status
private int status;
}
public class Tester
{
static void Main()
{
// tao mt di tong myStruct
myStruct theStruct = new myStruct();
theStruct.Status = -1; // khi tao
Console.WriteLine("theStruct.Status: {0}, theStruct.Status);
// thay di gi tri
theStruct.Status = 2;
Console.WriteLine("Changed object);
Console.WriteLine("theStruct.Status: {0}, theStruct.Status);
// gn cho giao din
// boxing ngm dinh
IStorable isTemp = (IStorable) theStruct;
// thit lp gi tri thng qua tham chiu giao din
isTemp.Status = 4;
Console.WriteLine("Changed interface);
Console.WriteLine("theStruct.Status: {0}, isTemp: {1},
theStruct.Status, isTemp.Status);
// thay di gi tri mt ln na
theStruct.Status = 6;
Console.WriteLine("Changed object.);
Console.WriteLine("theStruct.Status: {0}, isTemp: {1},
theStruct.Status, isTemp.Status);
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
theStruct.Status: -1
Changed obAect.
theStruct.Status: )
Changed inter"ace
theStruct.Status: )% ise#&: *
Changed obAect
ThcThi3i)oDi4n
20)
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
theStruct.Status: +% ise#&: *
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Trong .I 56 A.0v giao 5i/n IStorable cK &et ChFng th4c Read() .; &>t thuec tInh 7; Status.
Ziao 5i/n n;V Gc thWc thi Lfi &et chu tr$c t9n 7; myStructu
public struct myStruct : IStorable
^oBn &z ngun th$ .: L9n trong Tester. *h$ng ta L_t mu LYng .i/c tBo &et th3 hi/n ca chu
tr$c .; khfi tBo thuec tInh 7; 1v sau K gi2 tr: ca status Gc in rau0
myStruct theStruct = new myStruct();
theStruct.Status = -1; // khi tao
Console.WriteLine("theStruct.Status: {0}, theStruct.status);
"#t !uD 7; gi2 tr: ca status Gc thi#t 7SCu
theStruct.Status = -1;
"# ti#C ch$ng ta truV cSC thuec tInh 3 thaV i statusv &et 7mn n?a th>ng !ua i tGng gi2
tr:u
// thay di gi tri
theStruct.Status = 2;
Console.WriteLine("Changed object);
Console.WriteLine("theStruct.Status: {0}, theStruct.Status);
k#t !uD chb ra sW thaV iu
Changed object
theStruct.Status: 2
TBi i3& n;Vv ch$ng ta tBo ra &et tha& chi#u #n giao 5i/n IStorablev &et i tGng gi2
tr: theStruct Gc LoUing ngm& .; g2n 7Bi cho tha& chi#u giao 5i/n. Sau K ch$ng ta 5ong
giao 5i/n 3 thaV i gi2 tr: ca status LYng Nu
// gn cho mt giao din
// boxing ngm dinh
IStorable isTemp = (IStorable) theStruct;
// thit lp gi tri thng qua tham chiu giao din
isTemp.Status = 4;
Console.WriteLine("Changed interface);
Console.WriteLine("theStruct.Status: {0}, isTemp: {1},
theStruct.Status, isTemp.Status);
nh ch$ng ta z thhV k#t !uD thWc hi/n cK &et i3& kh2c Li/tu
Changed interface
theStruct.Status: 2, isTemp: 4
^i`u UDV ra 7;u i tGng Gc giao 5i/n tha& chi#u #n thaV i gi2 tr: status LYng Nv nhng
i tGng gi2 tr: chu tr$c kh>ng thaV i.ThS& chI cK nhi`u th$ .: hFn khi ch$ng ta truV cSC
ChFng th4c th>ng !ua LDn thPn i tGngu
ThcThi3i)oDi4n
20N
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
// than di gi tri ln na
theStruct.Status = 6;
Console.WriteLine("Changed object);
Console.WriteLine("theStruct.Status: {0}, isTemp: {1},
theStruct.Status, isTemp.Status);
k#t !uD i tGng gi2 tr: thaV i nhng i tGng Gc LoUing .; Gc giao 5i/n tha& ch:#u
kh>ng thaV iu
Changed object
theStruct.Status: 6, isTemp: 4
Ta thE U'& oBn &z <+ 3 hi3u tha& .` c2ch thWc hi/n tr9nu
89 d: x(w) MSlL ph,t sinh t5 N9 d: x(v(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
method private hidebysig static void Main() il managed
{
.entrypoint
// Code size 206 (0xce)
.maxstack 4
.local ([0] value class myStruct theStruct,
[1] class IStorable isTemp,
[2] int32 V2)
IL0000: ldloca.s theStruct
IL0002: iniobj myStruct
IL0008: ldloca.s theStruct
IL000a: ldc.i4.ml
IL000b: call instance void myStruct::setstatus(int32)
IL0010: ldstr "theStruct.Status: {0}
IL0015: ldloca.s theStruct
IL001: call instance int32 myStruct::getstatus()
IL001c: stloc.2
IL001d: ldloca.s V2
IL001f: box [mscorlib]System.Int32
IL0024: call void [mscorlib] System.Console::WriteLine
(class System.String, class System.Object)
IL0029: ldloca.s theStruct
IL002b: ldc.i4.2
IL002c: call instance void myStruct::setstatus(int32)
ThcThi3i)oDi4n
20-
NgnNgLpTrnhC#
IL0031: ldstr "Changed object
IL0036: call void [mscorlib]System.Console::WriteLine
(class System.String)
IL003b: ldstr "theStruct.Status: {0}
IL0040: ldloca.s theStruct
IL0042: call instance int32 myStruct::getstatus()
IL004: stloc.2
IL0048: ldloca.s V2
IL004a: box [mscorlib]System.Int32
IL004f: call void [mscorlib]System.Console::WriteLine
(class System.String, class System.Object)
IL0054: ldloca.s theStruct
IL0056: box myStruct
IL005b: stloc.1
IL005c: ldloc.1
IL005d: ldc.i4.4
IL005e: callvirt instance void IStorable::setstatus(int32)
IL0063: ldstr "Changed interface
IL0068: call void [mscorlib]System.Console::WriteLine
(class System.String)
IL006d: ldstr "theStruct.Status: {0}, isTemp: {1}
IL002: ldloca.s theStruct
IL004: call instance int32 mySystem::getstatus()
IL009: stloc.2
IL00a: ldloca.s V2
IL00c: box [mscorlib]System.Int32
IL0081: ldloc.1
IL0082: callvirt instance int32 IStorable::getstatus()
IL008: stloc.2
IL0088: ldloca.s V2
IL008a: box [mscorlib]System.Int32
IL008f: call void [mscorlib]System.Console::WriteLine
(class System.String, class System.Object, class System.Object)
IL0094: ldloca.s theStruct
IL0096: ldc.i4.6
IL009: call instance void myStruct::setstatus(int32)
IL009c: ldstr "Changed object
IL00a1: call void [mscorlib]System.Console::WriteLine
ThcThi3i)oDi4n
200
NgnNgLpTrnhC#
(class System.String)
IL00a6: ldstr "theStruct.Status: {0}, isTemp: {1}
IL00ab: ldloca.s theStruct
IL00ad: call instance int32 myStruct::getstatus()
IL00b2: stloc.2
IL00b3: ldloca.s V2
IL00b5: box [mscorlib]System.Int32
IL00ba: ldloc.1
IL00bb: callvirt instance int32 IStorable::getstatus()
IL00c0: stloc.2
IL00c1: ldloca.s V2
IL00c3: box [mscorlib]System.Int32
IL00c8: call void [mscorlib]System.Console::WriteLine
(class System.String, class System.Object, class System.Object)
IL00cd: ret
} // end fo method Tester::Main
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Trong 5ng 7/nh IL00bv gi2 tr: ca status Gc thi#t 7SC th>ng !ua .i/c gOi i tGng gi2 tr:.
Ti#C th'o ch$ng ta thhV 7/nh gOi th4 hai f 5ng IL001. +u ] rYng .i/c gOi WriteLine() 5cn
#n .i/c LoUing &et gi2 tr: nguV9n 3 ChFng th4c GetString ca 7C object Gc gOi.
^i`u &un nhhn &Bnh 7; f 5ng 7/nh IL0056 khi &et chu tr$c myStruct z Gc LoUing.
i/c LoUing n;V tBo ra &et ki3u 5? 7:9u tha& chi#u cho tha& chi#u giao 5i/n. ; i`u !uan
trOng 7; f 5ng IL005e 7$c n;V IStorable::setstatus Gc gOi ch4 kh>ng ChDi 7;
myStruct::setStatus.
^i`u !uan trOng &un trnh L;V f PV 7; khi ch$ng ta thWc thi &et giao 5i/n .i &et ki3u gi2
tr:v ChDi ch_c ch_n rYng truV cSC c2c th;nh .i9n ca giao 5i/n th>ng !ua i tGng hFn 7;
th>ng !ua &et tha& chi#u giao 5i/n.
%Pu hSi *7 tr= ,i
CU> hVi 1u So s2nh gi?a 7C .; giao 5i/n
0r* #Wi 1) 2iao diIn 1h,+ Noi #op g mYt sc =iim sa>) giao diIn 1hng +>ng +Xp Xt +P sO
thO+ thi mJ ng>Kn n-o +*( diD> n-y s` =;H+ thO+ hiIn tLi +,+ #op thO+ thi giao diIn( MYt
giao diIn =;a ra +hZ =i n6i rbng +6 +>ng +Xp mYt sc sO _,+ nhn h;ong d~n +ho nhng =iD>
g =6 _*y ra N- 1hng =i N-o +hi ti@t( MYt =iD> 1h,+ na #- tXt +* +,+ th-nh Ni%n +7a giao
diIn =;H+ gi* sn #- p>#i+ ng.m =Mnh( N@> +h3ng ta +c thay =ki th>Y+ t9nh tr>y +p +7a
th-nh Ni%n trong giao diIn th s` nhn =;H+ #ai(
2iao diIn +hZ +hPa nhng ph;<ng thP+f th>Y+ t9nhf sO 1iInf +hZ m:+( 8- 1hng +hPa d #iI>
th-nh Ni%nf Y 1hgi dOngf N- Y h7y( Ch3ng +mng 1hng +hPa Xt +P th-nh Ni%n stati+ n-o +*(
ThcThi3i)oDi4n
20=
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
CU> hVi 2u SW kh2c nhau gi?a giao 5i/n .; 7C trJu tGng
0r* #Wi 2) SO 1h,+ nha> +< *n #- sO 1@ th5a( MYt #op +6 thi 1@ th5a nhiD> giao diIn +Cng
mYt #3+f nh;ng 1hng thi 1@ th5a nhiD> h<n mYt #op tr5> t;Hng(
CU> hVi Fu *2c 7C thWc thi giao 5i/n sH ChDi 7;& g
0r* #Wi F) C,+ #op thO+ thi giao diIn ph*i +>ng +Xp +,+ ph.n thO+ thi +hi ti@t +ho +,+ ph;<ng
thP+f th>Y+ t9nhf +hZ m:+f sO 1iIn =;H+ 1hai ,o trong giao diIn(
CU> hVi Gu *K Lao nhi9u c2ch gOi &et ChFng th4c Gc khai L2o trong giao 5i/n
0r* #Wi G) C6 G +,+h gBi ph;<ng thP+ =;H+ 1hai ,o trong giao diIn)
0hng A>a #op +< sg tham +hi@> =@n =ci t;Hng +7a #op d~n _>Xt
0hng A>a mYt giao diIn tLo t5 #op +< sg tham +hi@> =@n =ci t;Hng d~n _>Xt
0hng A>a mYt =ci t;Hng d~n _>Xt
0hng A>a giao diIn tLo t5 =ci t;Hng d~n _>Xt
CU> hVi Qu *2c th;nh .i9n ca giao 5i/n cK th3 cK nh?ng thuec tInh truV cSC n;o
0r* #Wi Q) M^+ =Mnh +,+ th-nh Ni%n +7a giao diIn #- p>#i+( 8 m:+ ti%> +7a giao diIn #- _Uy
dOng +ho +,+ #op 1h,+ sn d:ng( N@> +h3ng ta thay =ki th>Y+ t9nh n-y nh; #- int'rna#f
prot'+t'd hay priNat' th s` gUy ra #ai(
CU> hVi vu *h$ng ta cK th3 tBo th3 hi/n ca giao 5i/n &et c2ch trWc ti#C Gc kh>ng
0r* #Wi v) ?hng thi tLo thi hiIn +7a giao diIn trO+ ti@p bng 1hai ,o n'w =;H+( Ch3ng ta
+hZ +6 thi tLo thi hiIn giao diIn thng A>a mYt phqp g,n Noi =ci t;Hng thO+ thi giao diIn(
%Pu hSi th5"
CU> hVi 1) 0o,n tn is =;H+ dCng #-m g trong giao diInu
CU> hVi 2) 0o,n tn as +6 #Hi h<n to,n tn is ND m^t n-o 1hi =;H+ sn d:ng #iIn A>an =@n giao
diInu
CU> hVi F) 2iao diIn #- 1ii> d #iI> tham +hi@> hay 1ii> gi, trMu
CU> hVi G) ?hi thO+ thi giao diIn Noi +X> tr3+( 0h tr>y +p +,+ th-nh Ni%n +7a giao diIn
thng A>a =ci t;Hng hay thng A>a tham +hi@> giao diIn #- tct nhXtu
CU> hVi Q) Sc giao diIn +6 thi =;H+ 1@ th5a +ho mYt #opu
CU> hVi v) 8iI+ thO+ thi giao diIn t;Wng minh #- thO+ thi nh; th@ n-ou 0rong tr;Wng hHp
n-o th +.n thO+ hiIn t;Wng minhu
47i tT-
4-i tp 1) &Jy Ni@t mYt giao diIn 1hai ,o mYt th>Y+ t9nh lD +hPa +h>ai gi, trM( 8i@t mYt #op
/mp#oy'' thO+ thi giao diIn =6(
4-i tp 2) dBan mJ ng>Kn sa> =Uy +6 #ai hJy sn #ai N- hJy +ho i@t tLi sao +6 #ai n-y( Sa>
1hi sna #ai hJy Ni@t mYt #op Cir+#' thO+ thi giao diIn n-yu
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
public interface IDimensions
{
ThcThi3i)oDi4n
20A
NgnNgLpTrnhC#
long width;
long height;
double Area();
double Circumference();
int Side();
}
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
4-i tp F) Ch;<ng trnh sa> =Uy +6 #ai hJy sn #aif i%n dM+h N- +hLy #Li +h;<ng trnhu 2i*i
th9+h tLi sao +h;<ng trnh +6 #ai(
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
using System;
interface IPoint
{
// Property signatures:
int x
{
get;
set;
}
int y
{
get;
set;
}
}
class MyPoint : IPoint
{
// Fields:
private int myX;
private int my;
// Constructor:
public MyPoint(int x, int y)
{
myX = x;
my = y;
}
// Property implementation:
public int x
ThcThi3i)oDi4n
20T
NgnNgLpTrnhC#
{
get
{
return myX;
}
set
{
myX = value;
}
}
public int y
{
get
{
return my;
}
set
{
my = value;
}
}
}
class MainClass
{
private static void PrintPoint(IPoint p)
{
Console.WriteLine(x={0}, y={1}, p.x, p.y);
}
public static void Main()
{
MyPoint p = new MyPoint(2,3);
Console.Write(My Point: );
PrintPoint(p);
IPoint p2 = new IPoint();
PrintPoint(p2);
}
}
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
ThcThi3i)oDi4n
210
NgnNgLpTrnhC#
4-i tp G) Uy dOng mYt giao diIn lDisp#ay +6 1hai ,o th>Y+ t9nh Nam' 1ii> +h>ai( &Jy
Ni@t hai #op Dog N- Cat thO+ thi giao diIn lDisp#ayf +ho i@t th>Y+ t9nh Nam' #- t%n +7a =ci
t;Hng(
ThcThi3i)oDi4n
211
NgnNgLpTrnhC#
C4/Nng D
MmNGE CH MCE TP H}P
M"ng
246i g<o G"ng
Gi< trc Grc Xcn4
Tr@& cJ+ c<c t4In4 +4n trong G"ng
24Ri t:o t4In4 +4n trong G"ng
V= 'ng t5 Q4f6 +6r6Gs
C%@ )Cn4 )r+ for[6c4
M"ng X6 c4i!@
M"ng X6 c4i!@ cng Qec4 t4/*c
M"ng X6 c4i!@ Qec4 t4/*c Q4<c n46@
C4@&_n XZi G"ng
V&st[G.rr6&
a~ c4F Gc
a~ c4F Gc HI +4+ g<n
V= 'ng Qi_@ c4F s. Q4<c
Gi6o 'iCn tJ+ 40+
C%@ 4ji k gIi tJ+
M>i trng .NET cung chC rht a 5Bng s 7Gng c2c 7C .` tSC hGCv Lao g&u Arrayv
ArrayListv ueuev Stackv BitArrayv NameValueCollectionv .; StringCollection.
Trong s K tSC hGC Fn giDn nhht 7; Arrayv PV 7; ki3u 5? 7i/u tSC hGC &; ng>n ng? *@
h\ trG UPV 5Wng sXn. *hFng n;V ch$ng ta sH t& hi3u c2ch 7;& .i/c .i &Dng &et chi`uv
&Dng a chi`uv .; &Dng c2c &Dng {kagg'5 arraV}. *h$ng ta cng Gc gii thi/u Chmn chb
&6c in5'U'rv PV 7; c2ch thi#t 7SC 3 7;& cho .i/c truV cSC nh?ng thuec tInh ging nhau trf
n9n Fn giDn hFnv &et 7C Gc chb &6c th ging nh &et &Dng.
Mng5Ch6M7c589Tp+%p
212
NgnNgLpTrnhC#
.NET cng cung chC nhi`u c2c giao 5i/nv nh IEnumerable .; ICollection. Nh?ng Chmn
thWc thi ca c2c giao 5i/n n;V cung chC c2c ti9u chuMn 3 tFng t2c .i c2c tSC hGC. Trong
chFng n;V ch$ng ta sH Gc c2ch sE 56ng hi/u !uD ca c2c giao 5i/n. *ng th>ng !ua
chFng n;V ch$ng ta sH Gc gii thi/u c2ch sE 56ng chung ca c2c tSC hGC trong .NETv Lao
g&u ArrayListv Dictionaryv Hashtablev ueuev .; Stack.
M=ng
MDng 7; &et tSC hGC cK th4 tW ca nh?ng i tGngv tht cD c2c i tGng n;V cong &et
ki3u. MDng trong ng>n ng? *@ cK &et .;i sW kh2c Li/t so .i &Dng trong ng>n ng? * .;
&et s ng>n ng? kh2cv Lfi . ch$ng 7; nh?ng i tGng. ^i`u n;V sH cung chC cho &Dng sE
56ng c2c ChFng th4c .; nh?ng thuec tInh.
Ng>n ng? *@ cung chC c$ Ch2C chuMn cho .i/c khai L2o nh?ng i tGng Array. TuV
nhi9nv c2i thSt sW Gc tBo ra 7; i tGng ca ki3u System.Array. MDng trong ng>n ng? *@
k#t hGC c$ Ch2C khai L2o &Dng th'o ki3u ng>n ng? * .; k#t hGC .i :nh nghda 7C 5o K th3
hi/n ca &Dng cK th3 truV cSC nh?ng ChFng th4c .; thuec tInh ca System.Array.
Met s c2c thuec tInh .; ChFng th4c ca 7C System.Array
T4In4 Hibn M t"
BinarySearch() 1hFng th4c tdnh public t& ki#& &et &Dng &et chi`u z
s_C th4 tW.
Clear() 1hFng th4c tdnh public thi#t 7SC c2c th;nh Chmn ca &Dng
.` 0 haV null.
Copy() 1hFng th4c tdnh public z nBC chng thWc hi/n sao chgC
&et .ong ca &Dng .;o &Dng kh2c.
CreateInstance() 1hFng th4c tdnh public z nBC chng tBo &et th3 hi/n &i
cho &Dng
IndexOf() 1hFng th4c tdnh public trD .` chb &6c ca th3 hi/n mu ti9n
ch4a gi2 tr: trong &Dng &et chi`u
LastIndexOf() 1hFng th4c tdnh public trD .` chb &6c ca th3 hi/n cui
cong ca gi2 tr: trong &Dng &et chi`u
Reverse() 1hFng th4c tdnh public Do th4 tW ca c2c th;nh Chmn trong
&Dng &et chi`u
Sort() 1hFng th4c tdnh public s_C U#C gi2 tr: trong &Dng &et
chi`u.
IsFixedSize Thuec tInh public gi2 tr: bool th3 hi/n &Dng cK kIch thc
c :nh haV kh>ng.
IsReadOnly Thuec tInh public gi2 tr: bool th3 hi/n &Dng chb Oc haV
kh>ng
Mng5Ch6M7c589Tp+%p
21)
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
IsSynchronized Thuec tInh public gi2 tr: bool th3 hi/n &Dng cK h\ trG
thr'a5isaf'
Length Thuec tInh public chi`u 5;i ca &Dng
Rank Thuec tInh public ch4a s chi`u ca &Dng
SyncRoot Thuec tInh public ch4a i tGng 5ong 3 ng Le truV cSC
trong &Dng
GetEnumerator() 1hFng th4c public trD .` IEnumerator
GetLength() 1hFng th4c public trD .` kIch thc ca &et chi`u c :nh
trong &Dng
GetLowerBound() 1hFng th4c public trD .` cSn 5i ca chi`u U2c :nh trong
&Dng
GetUpperBound() 1hFng th4c public trD .` cSn tr9n ca chi`u U2c :nh trong
&Dng
Initialize() "hfi tBo tht cD gi2 tr: trong &Dng ki3u gi2 tr: LYng c2ch gOi
Le khfi 56ng &ac :nh ca tJng gi2 tr:.
SetValue() 1hFng th4c public thi#t 7SC gi2 tr: cho &et th;nh Chmn U2c
:nh trong &Dng.
4*ng y(1) C,+ ph;<ng thP+ N- th>Y+ t9nh +7a Syst'm("rray(
Khai I/o "=ng
*h$ng ta cK th3 khai L2o &et &Dng trong *@ .i c$ Ch2C th'o sauu
<kiu d liu>[] <tn mng>
I 56 ta cK khai L2o nh sauu
int[] myIntArray;
*aC 5hu ngoac .u>ng {} L2o cho trnh Li9n 5:ch Li#t rYng ch$ng ta ang khai L2o &et &Dng.
"i3u 5? 7i/u 7; ki3u ca c2c th;nh Chmn ch4a L9n trong &Dng. Trong .I 56 L9n tr9n.
myIntArray Gc khai L2o 7; &Dng s nguV9n.
*h$ng ta tBo th3 hi/n ca &Dng LYng c2ch sE 56ng tJ khKa new nh sauu
myIntArray = new int[6];
"hai L2o n;V sH thi#t 7SC L9n trong Le nh &et &Dng ch4a s2u s nguV9n.
2hi +h3u 5;nh cho 7SC trnh .i9n isua7 8asicv th;nh Chmn mu ti9n 7u>n L_t mu 0v kh>ng
cK c2ch n;o thi#t 7SC cSn tr9n .; cSn 5i ca &Dngv .; ch$ng ta cng kh>ng th3 thi#t 7SC 7Bi
kIch thc ca &Dng.
^i`u !uan trOng 3 ChPn Li/t gi?a LDn thPn &Dng {tSC hGC c2c th;nh Chmn} .; c2c th;nh Chmn
trong &Dng. ^i tGng myIntArray 7; &et &Dngv th;nh Chmn 7; nq& s nguV9n Gc 7u gi?.
MDng trong ng>n ng? *@ 7; ki3u 5? 7i/u tha& chi#uv Gc tBo ra tr9n h'aC. po K
myIntArray Gc chC tr9n h'aC. Nh?ng th;nh Chmn ca &Dng Gc chC Ch2t 5Wa tr9n c2c ki3u
5? 7i/u ca ch$ng. S nguV9n 7; ki3u 5? 7i/u gi2 tr:v .; 5o K nh?ng th;nh Chmn ca
Mng5Ch6M7c589Tp+%p
21N
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
&V<ntArray 7; ki3u 5? 7i/u gi2 tr:v kh>ng ChDi s nguV9n Gc LoUing. Met &Dng ca ki3u 5?
7i/u tha& chi#u sH kh>ng ch4a g cD nhng tha& chi#u #n nh?ng th;nh Chmn Gc tBo ra tr9n
h'aC.
Yi/ tr6 "_c 6nh
"hi ch$ng ta tBo &et &Dng cK ki3u 5? 7i/u gi2 tr:v &\i th;nh Chmn sH ch4a gi2 tr: &ac :nh
ca ki3u 5? 7i/u {U'& LDng N.2v ki3u 5? 7i/u .; c2c gi2 tr: &ac :nh}. i khai L2ou
myIntArray = new int[5];
sH tBo ra &et &Dng nq& s nguV9nv .; &\i th;nh Chmn Gc thi#t 7SC gi2 tr: &ac :nh 7; 0v
PV cng 7; gi2 tr: &ac :nh ca s nguV9n.
"h>ng ging .i &Dng ki3u 5? 7i/u gi2 tr:v nh?ng ki3u tha& chi#u trong &et &Dng kh>ng
Gc khfi tBo gi2 tr: &ac :nh. ThaV .;o Kv ch$ng sH Gc khfi tBo gi2 tr: null. N#u ch$ng ta
c truV cSC #n &et th;nh Chmn trong &Dng ki3u 5? 7i/u tha& chi#u trc khi ch$ng Gc
khfi tBo gi2 tr: U2c :nhv ch$ng ta sH tBo ra &et ngoBi 7/.
ZiD sE ch$ng ta tBo ra &et 7C Button. *h$ng ta khai L2o &et &Dng c2c i tGng Button .i
c$ Ch2C sauu
Button[] myButtonArray;
.; ch$ng ta tBo th3 hi/n ca &Dng nh sauu
myButtonArray = new Button[3];
2hi +h3u ch$ng ta cK th3 .i#t ng_n gOn nh sauu
Button muButtonArray = new Button[3];
"h>ng ging .i .I 56 &Dng s nguV9n trcv cPu 7/nh n;V kh>ng tao ra &et &Dng .i nh?ng
tha& chi#u #n La i tGng Button. ThaV .;o K .i/c n;V sH tBo ra &et &Dng
&VButtonArray .i La tha& chi#u null. ^3 sE 56ng &Dng n;Vv mu ti9n ch$ng ta ChDi tBo .;
g2n i tGng Button cho tJng th;nh Chmn tha& chi#u trong &Dng. *h$ng ta cK th3 tBo i
tGng trong .ng 7aC .; sau K g2n tJng i tGng .;o trong &Dng.
TruL cT- c/c th7nh -hhn trong "=ng
^3 truV cSC .;o th;nh Chmn trong &Dng ta cK th3 sE 56ng to2n tE chb &6c {}. MDng 5ong
cF sf 0v 5o K chb &6c ca th;nh Chmn mu ti9n trong &Dng 7u>n 7u>n 7; 0. Nh .I 56 trc
th;nh Chmn mu ti9n 7; myArray[0].
Nh z trnh L;V f Chmn trcv &Dng 7; i tGngv .; 5o K nK cK nh?ng thuec tInh. Met
trong nh?ng thuec tInh haV sE 56ng 7; Lengthv thuec tInh n;V sH L2o cho Li#t s i tGng
trong &et &Dng. Met &Dng cK th3 Gc 2nh chb &6c tJ 0 #n Length 1. po K n#u cK nq&
th;nh Chmn trong &Dng th c2c chb &6c 7;u 0v 1v 2v )v N.
I 56 T.1 &inh hOa .i/c sE 56ng c2c kh2i ni/& .` &Dng tJ mu chFng ti gi. Trong .I 56
&et 7C t9n 7; Tester tBo ra &et &Dng ki3u Employee .; &et &Dng s nguV9n. TBo c2c i
tGng Employee sau K in hai &Dng ra &;n hnh.
Mng5Ch6M7c589Tp+%p
21-
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
89 d: y(1) #-m NiI+ Noi mYt m*ng(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
namespace ProgrammingCSharp
{
using System;
// tao mt lp don gin d lu tr trong mng
public class Employee
{
// b khi tao ly mt tham s
public Employee( int empID )
{
this.empID = empID;
}
public override string ToString()
{
return empID.ToString();
}
// bin thnh vin private
private int empID;
private int size;
}
public class Tester
{
static void Main()
{
int[] intArray;
Employee[] empArray;
intArray = new int[5];
empArray = new Employee[3];
// tao di tong da vo mng
for( int i = 0; i < empArray.Length; i++)
{
empArray[i] = new Employee(i+5);
}
// xut mng nguyn
for( int i = 0; i < intArray.Length; i++)
{
Console.Write(intArray[i].ToString()+\t);
Mng5Ch6M7c589Tp+%p
210
NgnNgLpTrnhC#
}
// xut mng Employee
for( int i = 0; i < empArray.Length; i++)
{
Console.WriteLine(empArray[i].ToString()+\t);
}
}
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
0 0 0 0 0 5 + 6
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
I 56 L_t mu .i .i/c :nh nghda &et 7C Employeev 7C n;V thWc thi &et Le khfi 5Wng 7hV
&et tha& s nguV9n. 1hFng th4c ToString() Gc k# thJa tJ 7C Object Gc Ch !uV#t 3
in ra gi2 tr: empID ca i tGng Employee.
*2c ki3u tBo ra 7; khai L2o ri &i tBo th3 hi/n ca hai &Dng. MDng s nguV9n Gc tW eng
thi#t 7SC gi2 tr: 0 &ac :nh cho tJng s nguV9n trong &Dng. Nei 5ung ca &Dng Employee
Gc tBo LYng c2c 7/nh trong .ng 7aC.
*ui congv nei 5ung ca cD hai &Dng Gc Uuht ra &;n hnh conso7' 3 D& LDo k#t !uD nh
&ong &un nq& gi2 tr: mu ca &Dng nguV9nv La s sau cong 7; ca &Dng Employee.
Khei t<o th7nh -hhn cda "=ng
*h$ng ta cK th3 khfi tBo nei 5ung ca &et &Dng ngaV 7$c tBo th3 hi/n ca &Dng LYng
c2ch at nh?ng gi2 tr: L9n trong 5hu ngoac {}. *@ cung chC hai c$ Ch2C 3 khfi tBo c2c
th;nh Chmn ca &Dngv &et c$ Ch2C 5;i .; &et c$ Ch2C ng_nu
int[] myIntArray = new int[5] { 2, 4, 6, 8, 10};
int[] myIntArray = { 2, 4, 6, 8, 10};
"h>ng cK sW kh2c Li/t gi?a hai c$ Ch2C tr9nv .; hmu h#t c2c chFng trnh `u sE 56ng c$
Ch2C ng_n hFn 5o sW tW nhi9n .; 7i 2nh nhi`u 7/nh ca ngi 7SC trnh.
S> 23ng tF khGa -ara"s
*h$ng ta cK th3 tBo &et ChFng th4c ri sau K hi3n th: c2c s nguV9n ra &;n hnh
conso7' LYng c2ch truV`n .;o &et &Dng c2c s nguV9n .; sE 56ng .ng 7aC foreach 3
5uV/t !ua tJng th;nh Chmn trong &Dng. TJ khKa params cho ChgC ch$ng ta truV`n &et s
Li#n ca tha& s &; kh>ng cmn thi#t ChDi tBo &et &Dng.
Trong .I 56 k# ti#Cv ch$ng ta sH tBo &et ChFng th4c t9n DisplayVals()v ChFng th4c n;V sH
7hV &et s c2c Li#n ca tha& s nguV9nu
public void DisplayVals( params int[] intVals)
Mng5Ch6M7c589Tp+%p
21=
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
1hFng th4c cK th3 U'& &Dng n;V nh th3 &et &Dng Gc tBo ra tng &inh .; Gc truV`n
.;o tha& s. Sau K ch$ng ta cK th3 tW 5o 7aC 7mn 7Gt !ua c2c th;nh Chmn trong &Dng ging
nh thWc hi/n .i Lht c4 &Dng nguV9n n;o kh2cu
foreach (int i in intVals)
{
Console.WriteLine("DisplayVals: {0}, i);
}
TuV nhi9nv ChFng th4c gOi kh>ng cmn thi#t ChDi tBo tng &inh &et &Dngv nK chb Fn giDn
truV`n .;o c2c s nguV9nv .; trnh Li9n 5:ch sH k#t hGC nh?ng tha& s n;V .;o trong &et
&Dng cho ChFng th4c DisplayValsv ta cK th3 gOi ChFng th4c nh sauu
t.DisplayVals(5,6,,8);
.; ch$ng ta cK th3 tW 5o tBo &et &Dng 3 truV`n .;o ChFng th4c n#u &unu
int [] explicitArray = new int[5] {1,2,3,4,5};
t.DisplayArray(explicitArray);
I 56 T.) cung chC tht cD &z ngun 3 &inh hOa sE 56ng c$ Ch2C params.
89 d: y(F) minh hBa sn d:ng params(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
namespace ProgrammingCSharp
{
using System;
public class Tester
{
static void Main()
{
Tester t = new Tester();
t.DisplayVals(5,6,,8);
int[] explicitArray = new int[5] {1,2,3,4,5};
t.DisplayVals(explicitArray);
}
public void DisplayVals( params int[] intVals)
{
foreach (int i in intVals)
{
Console.WriteLine("DisplayVals {0}, i);
}
}
}
}
Mng5Ch6M7c589Tp+%p
21A
NgnNgLpTrnhC#
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
Dis&!a'2a!s 5
Dis&!a'2a!s +
Dis&!a'2a!s 6
Dis&!a'2a!s 7
Dis&!a'2a!s 1
Dis&!a'2a!s )
Dis&!a'2a!s 3
Dis&!a'2a!s *
Dis&!a'2a!s 5
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
%Pu ,+nh ,_- for#ach
*Pu 7/nh 7aC foreach kh2 &i .i nh?ng ngi z hOc ng>n ng? *v tJ khKa n;V Gc sE
56ng trong ng>n ng? isua7 8asic. *Pu 7/nh foreach cho ChgC ch$ng ta 7aC !ua tht cD c2c
&6c trong &et &Dng haV trong &et tSC hGC.
*$ Ch2C sE 56ng 7/nh 7aC foreach nh sauu
foreach (<kiu d liu thnh phn> <tn truy cp> in <mng/tp hop> )
{
// thuc hin thng qua <tn truy cp> tong ng vi
// tng mc trong mng hay tp hop
}
po .SVv ch$ng ta cK th3 cDi ti#n .I 56 T.1 trc LYng c2ch thaV .i/c sE 56ng .ng 7aC for
LYng .ng 7aC foreach 3 truV cSC #n tJng th;nh Chmn trong &Dng.
89 d: y(2) Sn d:ng Tor'a+h(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
namespace ProgrammingCSharp
{
using System;
// tao mt lp don gin d lu tr trong mng
public class Employee
{
// b khi tao ly mt tham s
public Employee( int empID )
{
this.empID = empID;
}
Mng5Ch6M7c589Tp+%p
21T
NgnNgLpTrnhC#
public override string ToString()
{
return empID.ToString();
}
// bin thnh vin private
private int empID;
private int size;
}
public class Tester
{
static void Main()
{
int[] intArray;
Employee[] empArray;
intArray = new int[5];
empArray = new Employee[3];
// tao di tong da vo mng
for( int i = 0; i < empArray.Length; i++)
{
empArray[i] = new Employee(i+10);
}
// xut mng nguyn
foreach (int i in intArray)
{
Console.Write(i.ToString()+\t);
}
// xut mng Employee
foreach ( Employee e in empArray)
{
Console.WriteLine(e.ToString()+\t);
}
}
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
"#t !uD ca .I 56 T.2 cng tFng tW nh .I 56 T.1. TuV nhi9nv .i .i/c sE 56ng .ng 7aC for
ta ChDi U2c :nh kIch thc ca &Dngv sE 56ng Li#n #& tB& thi 3 truV cSC #n tJng th;nh
Chmn trong &Dngu
Mng5Ch6M7c589Tp+%p
220
NgnNgLpTrnhC#
for (int i = 0 ; i < empArray.Length; i++)
{
Console.WriteLine(empArray[i].ToString());
}
ThaV .;o K ta sE 56ng foreach v khi K .ng 7aC sH tW eng trIch ra tJng &6c tumn tW trong
&Dng .; g2n tB& .;o &et tha& chi#u i tGng khai L2o f mu .ng 7aCu
foreach ( Employee e in empArray)
{
Console.WriteLine(e.ToString()+\t);
}
^i tGng Gc trIch tJ &Dng cK ki3u 5? 7i/u tFng 4ng. po K ch$ng ta cK th3 sE 56ng Lht
c4 th;nh .i9n public ca i tGng.
M=ng a chiCu
TJ mu chFng #n gi ch$ng ta chb nKi #n &Dng c2c s nguV9n haV &Dng c2c i tGng.
Tht cD c2c &Dng n;V `u 7; &Dng &et chi`u. MDng &et chi`u trong K c2c th;nh Chmn ca nK
chb Fn giDn 7; c2c i tGng ki3u gi2 tr: haV i tGng tha& chi#u. MDng cK th3 Gc t ch4c
Ch4c tBC hFn trong K &\i th;nh Chmn 7; &et &Dng kh2cv .i/c t ch4c n;V gOi 7; &Dng a
chi`u.
MDng hai chi`u Gc t ch4c th;nh c2c 5ng .; cetv trong K c2c 5ng 7; Gc tInh th'o h;ng
ngang ca &Dngv .; c2c cet Gc tInh th'o h;ng 5Oc ca &Dng.
MDng La chi`u cng cK th3 Gc tBo ra nhng thng It sE 56ng 5o khK hnh 5ung. Trong
&Dng La chi`u nh?ng 5ng LPV gi 7; c2c &Dng hai chi`u.
Ng>n ng? *@ h\ trG hai ki3u &Dng a chi`u 7;u
MDng a chi`u cong kIch thcu trong &Dng n;V &\i 5ng trong &Dng cK cong kIch
thc .i nhau. MDng n;V cK th3 7; hai haV nhi`u hFn hai chi`u.
MDng a chi`u kh>ng cong kIch thcu trong &Dng n;V c2c 5ng cK th3 kh>ng cong
kIch thc .i nhau.
M=ng a chiCu cong kEch thc
MDng a chi`u cong kIch thc cn gOi 7; &Dng hnh ch? nhSt {r'ctangu7'r array}. Trong
&Dng hai chi`u c i3nv chi`u mu ti9n Gc tInh LYng s 5ng ca &Dng .; chi`u th4 hai
Gc tInh LYng s cet ca &Dng.
^3 khai L2o &Dng hai chi`uv ch$ng ta cK th3 sE 56ng c$ Ch2C th'o sauu
<kiu d liu> [,] <tn mng>
I 56 3 khai L2o &et &Dng hai chi`u cK t9n 7; myRectangularArray 3 ch4a hai 5ng .; La
cet c2c s nguV9nv ch$ng ta cK th3 .i#t nh sauu
int [ , ] myRectangularArray;
Mng5Ch6M7c589Tp+%p
221
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
I 56 ti#C sau PV &inh hOa .i/c khai L2ov tBo th3 hi/nv khfi tBo .; in nei 5ung ra &;n hnh
ca &et &Dng hai chi`u. Trong .I 56 n;Vv .ng 7aC for Gc sE 56ng 3 khfi tBo c2c th;nh
Chmn trong &Dng.
89 d: y(G) M*ng hai +hiD>(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
namespace ProgrammingCSharp
{
using System;
public class Tester
{
static void Main()
{
// khai bo s dng v s ct ca mng
const int rows = 4;
const int columns = 3;
// khai bo mng 4x3 s nguyn
int [,] rectangularArray = new int[rows, columns];
// khi tao cc thnh phn trong mng
for(int i = 0; i < rows; i++)
{
for(int j = 0; j < columns; j++)
{
rectangularArray[i,j] = i+j;
}
}
// xut ni dung ra mn hnh
for(int i = 0; i < rows; i++)
{
for(int j = 0; j < columns; j++)
{
Console.WriteLine("rectangularArray[{0},{1}] = {2},
i, j, rectangularArray[i, j]);
}
}
}
}
}
Mng5Ch6M7c589Tp+%p
222
NgnNgLpTrnhC#
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
rectangu!arBrra'C0%0D = 0
rectangu!arBrra'C0%1D = 1
rectangu!arBrra'C0%)D = )
rectangu!arBrra'C1%0D = 1
rectangu!arBrra'C1%1D = )
rectangu!arBrra'C1%)D = 3
rectangu!arBrra'C)%0D = )
rectangu!arBrra'C)%1D = 3
rectangu!arBrra'C)%)D = *
rectangu!arBrra'C3%0D = 3
rectangu!arBrra'C3%1D = *
rectangu!arBrra'C3%)D = 5
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Trong .I 56 n;Vv ch$ng ta khai L2o hai gi2 tr:u
const int rows = 4;
const int columns = 3;
hai gi2 tr: n;V Gc sE 56ng 3 khai L2o s chi`u ca &Dngu
int [,] rectangularArray = new int[rows, columns];
+u ] trong c$ Ch2C n;Vv 5hu ngoac .u>ng trong intv chb ra rYng ang khai L2o &et ki3u 5?
7i/u 7; &Dng s nguV9nv .; 5hu ChMV {v} chb ra rYng PV 7; &Dng hai chi`u {hai 5hu ChMV khai
L2o &Dng La chi`uv .; nhi`u hFn n?a}. i/c tBo th3 hi/n thWc sW ca &Dng f 7/nh new int
rows,columns 3 thi#t 7SC kIch thc ca &\i chi`u. PV khai L2o .; tBo th3 hi/n Gc
k#t hGC .i nhau.
*hFng trnh khfi tBo tht cD c2c gi2 tr: c2c th;nh Chmn trong &Dng th>ng !ua hai .ng 7aC
for. +aC th>ng !ua &\i cet ca &\i 5ng. po Kv th;nh Chmn mu ti9n Gc khfi tBo 7;
rectangularArray[0,0]v ti#C th'o Lfi rectangularArray[0,1] .; #n rectangularArray[0,2].
Met khi i`u n;V thWc hi/n Uong th chFng trnh sH chuV3n !ua thWc hi/n ti#C f 5ng ti#C
t6cu rectangularArray[1,0], rectangularArray[1,1], rectangularArray[1,2]. *ho #n khi tht
cD c2c cet trong tht cD c2c 5ng z Gc 5uV/t !ua t4c 7; tht cD c2c th;nh Chmn trong &Dng z
Gc khfi tBo.
Nh ch$ng ta z Li#tv ch$ng ta cK th3 khfi tBo &Dng &et chi`u LYng c2ch sE 56ng 5anh s2ch
c2c gi2 tr: L9n trong 5hu ngoac {}. *h$ng ta cng cK th3 7;& tFng tW .i &Dng hai chi`u.
Trong .I 56 T.- khai L2o &Dng hai chi`u rectangularArrayv .; khfi tBo c2c th;nh Chmn ca nK
th>ng !ua c2c 5anh s2ch c2c gi2 tr: trong ngoacv sau K in ra nei 5ung ca nei 5ung.
89 d: y(Q) ?hgi tLo m*ng =a +hiD>(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Mng5Ch6M7c589Tp+%p
22)
NgnNgLpTrnhC#
namespace ProgrammingCSharp
{
using System;
public class Tester
{
static void Main()
{
// khai bo bin lu s dng s ct mng
const int rows = 4;
const int columns = 3;
// khai bo v dinh ngha mng 4x3
int[,] rectangularArray = {
{0,1,2}, {3,4,5}, {6,,8},{9,10,11}
};
// xt ni dung ca mng
for( int i = 0; i < rows; i++)
{
for(int j = 0; j < columns; j++)
{
Console.WriteLine("rectangularArray[{0},{1}] = {2},
i, j, rectangularArray[i,j]);
}
}
}
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
rectangu!arBrra'C0%0D = 0
rectangu!arBrra'C0%1D = 1
rectangu!arBrra'C0%)D = )
rectangu!arBrra'C1%0D = 3
rectangu!arBrra'C1%1D = *
rectangu!arBrra'C1%)D = 5
rectangu!arBrra'C)%0D = +
rectangu!arBrra'C)%1D = 6
rectangu!arBrra'C)%)D = 7
rectangu!arBrra'C3%0D = 9
Mng5Ch6M7c589Tp+%p
22N
NgnNgLpTrnhC#
rectangu!arBrra'C3%1D = 10
rectangu!arBrra'C3%)D = 11
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
I 56 tr9n cng tFng tW nh .I 56 T.Nv nhng trong .I 56 n;V ch$ng ta thWc hi/n .i/c khfi
tBo trWc ti#C khi tBo c2c th3 hi/nu
int[,] rectangularArray =
{
{0,1,2}, {3,4,5}, {6,,8},{9,10,11}
};
Zi2 tr: Gc g2n th>ng !ua Ln 5anh s2ch trong ngoac &Kcv &\i trong s K 7; cK La th;nh
Chmnv Lao h;& &et &Dng NU).
N#u ch$ng ta .i#t nh sauu
int[,] rectangularArray =
{
{0,1,2,3}, {4,5,6,}, {8,9,10,11}
};
th sH tBo ra &et &Dng )UN.
M=ng a chiCu cG kEch kh/c nhau
*ng nh gii thi/u trc kIch thc ca c2c chi`u cK th3 kh>ng LYng nhauv i`u n;V
kh2c .i &Dng a chi`u cong kIch thc. N#u hnh 5Bng ca &Dng a chi`u cong kIch thc
cK 5Bng hnh ch? nhSt th hnh 5Bng ca &Dng n;V kh>ng ChDi hnh ch? nhSt . c2c chi`u ca
ch$ng kh>ng i`u nhau.
"hi ch$ng ta tBo &et &Dng a chi`u kIch thc kh2c nhau th ch$ng ta khai L2o s 5ng
trong &Dng trc. Sau K .i &\i 5ng sH gi? &et &Dngv cK kIch thc Lht k. Nh?ng &Dng
n;V Gc khai L2o ri9ng. Sau K ch$ng ta khfi tBo gi2 tr: c2c th;nh Chmn trong nh?ng &Dng
L9n trong.
Trong &Dng n;Vv &\i chi`u 7; &et &Dng &et chi`u. ^3 khai L2o &Dng a chi`u cK kIch
thc kh2c nhau ta sE 56ng c$ Ch2C sauv khi K s ngoac chb ra s chi`u ca &Dngu
<kiu d liu> [] [] ...
I 56v ch$ng ta cK th3 khai L2o &Dng s nguV9n hai chi`u kh2c kIch thc t9n myagged-
Array nh sauu
int [] [] myaggedArray;
*h$ng ta cK th3 truV cSC th;nh Chmn th4 nq& ca &Dng th4 La LYng c$ Ch2Cu myagged-
Array[2][4].
I 56 T.0 tBo ra &Dng kh2c kIch thc t9n myaggedArrayv khfi tBo c2c th;nh Chmnv ri sau
K in ra &;n hnh. ^3 ti#t ki/& thi gianv ch$ng ta sE 56ng &Dng c2c s nguV9n 3 c2c th;nh
Chmn ca nK Gc tW eng g2n gi2 tr: &ac :nh. ; ta chb cmn g2n &et s gi2 tr: cmn thi#t.
Mng5Ch6M7c589Tp+%p
22-
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
89 d: y(v) M*ng 1h,+ +hiD>(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
namespace ProgrammingCSharp
{
using System;
public class Tester
{
static void Main()
{
const int rows = 4;
// khai bo mng ti da bn dng
int[][] jaggedArray = new int[rows][];
// dng du tin c 5 phn t
jaggedArray[0] = new int[5];
// dng th hai c 2 phn t
jaggedArray[1] = new int[2];
// dng th ba c 3 phn t
jaggedArray[2] = new int[3];
// dng cui cng c 5 phn t
jaggedArray[3] = new int[5];
// khi tao mt vi gi tri cho cc thnh phn ca mng
jaggedArray[0][3] = 15;
jaggedArray[1][1] = 12;
jaggedArray[2][1] = 9;
jaggedArray[2][2] = 99;
jaggedArray[3][0] = 10;
jaggedArray[3][1] = 11;
jaggedArray[3][2] = 12;
jaggedArray[3][3] = 13;
jaggedArray[3][4] = 14;
for(int i = 0; i < 5; i++)
{
Console.WriteLine("jaggedArray[0][{0}] = {1},
i, jaggedArray[0][i]);
}
for(int i = 0; i < 2; i++)
{
Console.WriteLine("jaggedArray[1][{0}] = {1},
Mng5Ch6M7c589Tp+%p
220
NgnNgLpTrnhC#
i, jaggedArray[1][i]);
}
for(int i = 0; i < 3; i++)
{
Console.WriteLine("jaggedArray[2][{0}] = {1},
i, jaggedArray[2][i]);
}
for(int i = 0; i < 5; i++)
{
Console.WriteLine("jaggedArray[3][{0}] = {1},
i, jaggedArray[3][i]);
}
}
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
AaggedBrra'C0DC0D = 0
AaggedBrra'C0DC1D = 0
AaggedBrra'C0DC)D = 0
AaggedBrra'C0DC3D = 15
AaggedBrra'C0DC*D = 0
AaggedBrra'C1DC0D = 0
AaggedBrra'C1DC1D = 1)
AaggedBrra'C)DC0D = 0
AaggedBrra'C)DC1D = 9
AaggedBrra'C)DC)D = 99
AaggedBrra'C3DC0D = 10
AaggedBrra'C3DC1D = 11
AaggedBrra'C3DC)D = 1)
AaggedBrra'C3DC3D = 13
AaggedBrra'C3DC*D = 1*
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Trong .I 56 n;Vv &Dng Gc tBo .i Ln 5ngu
int[][] jaggedArray = new int[rows][];
*h$ ] rYng chi`u th4 hai kh>ng U2c :nh. po sau K ch$ng ta cK th3 khai L2o &\i 5ng cK
kIch thc kh2c nhau. 8n 7/nh sau tBo cho &\i 5ng &et &Dng &et chi`u cK kIch thc
kh2c nhauu
Mng5Ch6M7c589Tp+%p
22=
NgnNgLpTrnhC#
// dng du tin c 5 phn t
jaggedArray[0] = new int[5];
// dng th hai c 2 phn t
jaggedArray[1] = new int[2];
// dng th ba c 3 phn t
jaggedArray[2] = new int[3];
// dng cui cng c 5 phn t
jaggedArray[3] = new int[5];
Sau khi tBo c2c 5ng cho &Dng Uongv ta thWc hi/n .i/c a c2c gi2 tr: .;o c2c th;nh Chmn ca
&Dng. ; cui cong 7; Uuht nei 5ung ca &Dng ra &;n hnh.
2hi +h3u "hi ch$ng ta truV cSC c2c th;nh Chmn ca &Dng kIch thc LYng nhauv ch$ng ta
at tht cD c2c chb &6c ca c2c chi`u .;o trong cong 5hu ngac .u>ngu
rectangularArray[i,j]
TuV nhi9n .i &Dng cK kIch thc kh2c nhau ta ChDi 3 tJng chb &6c ca tJng chi`u trong
hu ngoac .u>ng ri9ngu
jaggedArray[i][j]
%huL0n i "=ng
Nh?ng &Dng cK th3 chuV3n i .i nhau n#u nh?ng chi`u ca ch$ng LYng nhau .; n#u
c2c ki3u ca c2c th;nh Chmn cK th3 chuV3n i Gc. *huV3n i tng &inh gi?a c2c &Dng
UDV ra n#u c2c th;nh Chmn ca nh?ng &Dng cK th3 chuV3n i tng &inh. ; ngGc 7Biv
chuV3n i ngm& :nh ca &Dng UDV ra n#u c2c th;nh Chmn ca nh?ng &Dng cK th3 chuV3n
i ngm& :nh.
N#u &et &Dng ch4a nh?ng tha& chi#u #n nh?ng i tGng tha& chi#uv &et chuV3n i cK
th3 Gc ti &et &Dng ca nh?ng i tGng cF sf. I 56 T.= &inh hOa .i/c chuV3n i &et
&Dng ki3u Button #n &et &Dng nh?ng i tGng.
89 d: y(w) Ch>yin =ki gia nhng m*ng(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
namespace ProgrammingCSharp
{
using System;
// tao lp d lu tr trong mng
public class Employee
{
public Employee( int empID)
{
this.empID = empID;
}
Mng5Ch6M7c589Tp+%p
22A
NgnNgLpTrnhC#
public override string ToString()
{
return empID.ToString();
}
// bin thnh vin
private int empID;
private int size;
}
public class Tester
{
// phong thc ny ly mt mng cc object
// chng ta truyn vo mng cc di tong Employee
// v sau d l mng cc string, c su chuyn di ngm
// v c hai diu dn xut t lp object
public static void PrintArray(object[] theArray)
{
Console.WriteLine("Contents of the Array: {0}, theArray.ToString());
// in ra tng thnh phn trong mng
foreach (object obj in theArray)
{
// trnh bin dich s gi obj.ToString()
Console.WriteLine("Value: {0}, obj);
}
}
static void Main()
{
// tao mng cc di tong Employee
Employee[] myEmployeeArray = new Employee[3];
// khi tao cc di tong ca mng
for (int i = 0; i < 3; i++)
{
myEmployeeArray[i] = new Employee(i+5);
}
// hiu thi gi tri ca mng
PrintArray( myEmployeeArray );
// tao mng gm hai chui
string[] array ={ "hello, "world};
// xut ra ni dung ca chui
Mng5Ch6M7c589Tp+%p
22T
NgnNgLpTrnhC#
PrintArray( array );
}
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
Contents o" the Brra' Erogra##ingFCShar&.:#&!o'eeCD
2a!ue: 5
2a!ue: +
2a!ue: 6
Contents o" the Brra' Erogra##ingFCShar&.StringCD
2a!ue: he!!o
2a!ue: wor!d
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
I 56 T.= L_t mu LYng .i/c tBo &et 7C Fn giDn Employee nh c2c .I 56 trc. +C Tester
LPV gi Gc th9& &et ChFng th4c tdnh PrintArray() 3 Uuht nei 5ung ca &Dngv ChFng
th4c n;V cK khai L2o &et tha& s 7; &Dng &et chi`u c2c i tGng objectu
public static void PrintMyArray( object[] theArray)
object 7; 7C cF sf ngm& :nh cho tht cD c2c i tGng trong &>i trng .NETv n9n nK Gc
khai L2o ngm& :nh cho cD hai 7C string .; Employee.
1hFng th4c PrintArray thWc hi/n hai h;nh eng. ^mu ti9nv 7; gOi ChFng th4c ToString()
ca &Dngu
Console.WriteLine("Contents of the Array {0}, theArray.ToString());
T9n ca ki3u 5? 7i/u &Dng Gc in rau
Contents of the Array ProgrammingCSharp.Employee[]
...
Contents of the Array System.String[]
Sau K ChFng th4c PrintArray thWc hi/n ti#C .i/c gOi ChFng th4c ToString() trong &\i
th;nh Chmn trong &Dng nhSn Gc. po ToString() 7; ChFng th4c Do ca 7C cF sf objectv .;
ch$ng ta z thWc hi/n Ch !uV#t trong 7C Employee. N9n ChFng th4c ToString() ca 7C
Employee Gc gOi. i/c gOi ToString() cK th3 kh>ng cmn thi#tv nhng n#u gOi th cng
kh>ng cK hBi g .; nK gi$C cho ta i UE .i c2c i tGng &et c2ch a hnh.
SLst#".prraL
+C &Dng Array ch4a &et s c2c ChFng th4c h?u Ich cho ChgC &f reng nh?ng khD nqng
ca &Dng .; 7;& cho &Dng &Bnh hFn nh?ng &Dng trong ng>n ng? kh2c {U'& LDng T.1}. [ai
ChFng th4c tdnh h?u 56ng ca 7C Array 7; Sort() .; Reverse(). *K &et c2ch h\ trG mV
cho nh?ng ki3u 5? 7i/u nguV9n thV nh 7; ki3u. ^a &Dng 7;& .i/c .i nh?ng ki3u kh2c
Mng5Ch6M7c589Tp+%p
2)0
NgnNgLpTrnhC#
nh Button cK &et s khK khqn hFn. I 56 T.A &inh hOa .i/c sE 56ng hai ChFng th4c 3
thao t2c i tGng chu\i.
89 d: y(x) Sn d:ng "rray(Sort\] N- "rray(Reverse().
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
namespace ProgrammingCSharp
{
using System;
public class Tester
{
public static void PrintArray(object[] theArray)
{
foreach( object obj in theArray)
{
Console.WriteLine("Value: {0}, obj);
}
Console.WriteLine("\n);
}
static void Main()
{
string[] myArray =
{
"Who, "is,Kitty,Mun
};
PrintArray( myArray );
Array.Reverse( myArray );
PrintArray( myArray );
string[] myOtherArray =
{
"Chung, "toi, "la, "nhung,nguoi,
lap,trinh, "may, "tinh
};
PrintArray( myOtherArray );
Array.Sort( myOtherArray );
PrintArray( myOtherArray );
}
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Mng5Ch6M7c589Tp+%p
2)1
NgnNgLpTrnhC#
?@t A>*)
2a!ue: >ho
2a!ue: is
2a!ue: Gitt'
2a!ue: Mun
2a!ue: Mun
2a!ue: Gitt'
2a!ue: is
2a!ue: >ho
2a!ue: Chung
2a!ue: toi
2a!ue: !a
2a!ue: nhung
2a!ue: nguoi
2a!ue: !a&
2a!ue: trinh
2a!ue: #a'
2a!ue: tinh
2a!ue: Chung
2a!ue: !a
2a!ue: !a&
2a!ue: #a'
2a!ue: nguoi
2a!ue: nhung
2a!ue: tinh
2a!ue: toi
2a!ue: trinh
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
I 56 L_t mu LYng .i/c tBo &Dng &VArrayv &Dng c2c chu\i .i c2c tJ sauu
"Who, "is, "Kitty, Mun
&Dng n;V Gc in rav sau K Gc truV`n .;o cho h;& Array.Reverse()v k#t !uD ch$ng ta thhV
7; k#t !uD ca chu\i nh sauu
Value: Mun
Value: Kitty
Value: is
Mng5Ch6M7c589Tp+%p
2)2
NgnNgLpTrnhC#
Value: Who
TFng tW nh .SVv .I 56 cng tBo ra &Dng th4 haiv myOtherArrayv ch4a nh?ng tJ sauu
"Chung, "toi, "la, "nhung,nguoi,
lap,trinh, "my, "tnh
Sau khi gOi ChFng th4c Array.Sort() th c2c th;nh Chmn ca &Dng Gc s_C U#C 7Bi th'o th4
tW a7ChaL'u
Value: Chung
Value: la
Value: lap
Value: may
Value: nguoi
Value: nhung
Value: tinh
Value: toi
Value: trinh
4H cha "3c
^>i khi ch$ng ta ch$ng ta &ong &un truV cSC &et tSC hGC L9n trong &et 7C nh th3
LDn thPn 7C 7; &et &Dng. I 56v giD sE ch$ng ta tBo &et i`u khi3n ki3u ListBoU t9n 7;
myListBox ch4a &et 5anh s2ch c2c chu\i 7u tr? trong &et &Dng &et chi`uv &et Li#n th;nh
.i9n private myStrings. Met List 8oU ch4a c2c thuec tInh th;nh .i9n .; nh?ng ChFng th4c
.; th9& .;o K &Dng ch4a c2c chu\i ca nK. TuV nhi9nv cK th3 thuSn ti/n hFn n#u cK th3 truV
cSC &Dng ListBoU .i chb &6c nh th3 ListBoU 7; &et &Dng thSt sW. I 56v ta cK th3 truV cSC
i tGng ListBoU Gc tBo ra nh sauu
string theFirstString = myListBox[0];
string theLastString = myListBox[myListBox.Length - 1];
8e chb &6c 7; &et cF ch# cho ChgC c2c th;nh Chmn c7i'nt truV cSC &et tSC hGC ch4a L9n trong
&et 7C LYng c2ch sE 56ng c$ Ch2C ging nh truV cSC &Dng {}. *hb &6c 7; &et 7oBi thuec
tInh ac Li/t .; Lao g& c2c ChFng th4c get() .; set() 3 U2c nhSn nh?ng h;nh .i ca
ch$ng.
*h$ng ta cK th3 khai L2o thuec tInh chb &6c L9n trong ca 7C LYng c2ch sE 56ng c$ Ch2C
nh sauu
<kiu d liu> this [<kiu d liu> <di mc>]
{ get; set; }
"i3u trD .` Gc !uV#t :nh Lfi ki3u ca i tGng Gc trD .` Lfi Le chb &6cv trong khi K
ki3u ca i &6c Gc U2c :nh Lfi ki3u ca i &6c 5ong 3 7;& chb s .;o trong tSC hGC
ch4a i tGng Ich. Mac 5o ki3u ca chb &6c thng 5ong 7; c2c ki3u nguV9nv ch$ng ta
Mng5Ch6M7c589Tp+%p
2))
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
cng cK th3 5ong chb &6c cho tSC hGC LYng c2c ki3u 5? 7i/u kh2cv nh ki3u chu\i. *h$ng ta
cng cK th3 cung chC Le chb &6c .i nhi`u tha& s 3 tBo ra &Dng a chi`u.
TJ khKa this tha& chi#u #n i tGng nFi &; chb &6c Uuht hi/n. Nh &et thuec tInh Lnh
thngv ch$ng ta cng cK th3 :nh nghda ChFng th4c get() .; set() 3 U2c :nh i tGng
n;o trong &Dng Gc V9u cmu truV cSC haV thi#t 7SC.
I 56 T.T khai L2o &et i`u khi3n ListBoUv t9n 7; ListBoxTestv i tGng n;V ch4a &et &Dng
Fn giDn {myStrings} .; &et chb &6c 3 truV cSC nei 5ung ca &Dng.
2hi +h3u ^i .i 7SC trnh *v Le chb &6c a ra ging nh .i/c nBC chng to2n tE chb
&6c {} trong ng>n ng? *. To2n tE chb &6c kh>ng Gc nBC chng trong ng>n ng? *@v
.; Gc thaV th# Lfi Le chb &6c.
89 d: y(y) Sn d:ng Y +hZ m:+(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
namespace ProgrammingCSharp
{
using System;
// tao lp ListBox
public class ListBoxTest
{
// khi tao ListBox vi mt chui
public ListBoxTest( params string[] initialStrings)
{
// cp pht khng gian cho chui
strings = new String[256];
// copy chui truyn t tham s
foreach ( string s in initialStrings)
{
strings[ctr++] = s;
}
}
// thm mt chui
public void Add(string theString)
{
if (ctr >= strings.Length)
{
// x l khi ch mc sai
}
else
strings[ctr++] = theString;
Mng5Ch6M7c589Tp+%p
2)N
NgnNgLpTrnhC#
}
// thuc hin b truy cp
public string this[int index]
{
get
{
if ( index < 0 index >= strings.Length)
{
// x l ch mc sai
}
return strings[index];
}
set
{
if ( index >= ctr)
{
// x l li ch mc khng tn tai
}
else
strings[index] = value;
}
}
// ly s long chui doc lu gi
public int GetNumEntries()
{
return ctr;
}
// cc bin thnh vin lu gi mng cho b ch mc
private string[] strings;
private int ctr = 0;
}
// lp thuc thi
public class Tester
{
static void Main()
{
// tao mt di tong ListBox mi v khi tao
ListBoxTest lbt = new ListBoxTest("Hello,World);
Mng5Ch6M7c589Tp+%p
2)-
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
// thm mt s chui vo lbt
lbt.Add("Who);
lbt.Add("is);
lbt.Add("Ngoc);
lbt.Add("Mun);
// dng b ch mc
string strTest = "Universe;
lbt[1] = strTest;
// truy cp v xut tt c cc chui
for(int i = 0; i < lbt.GetNumEntries(); i++)
{
Console.WriteLine("lbt[{0}]: {1}, i, lbt[i]);
}
}
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
!btC0D: ,e!!o
!btC1D: =ni$erse
!btC)D: >ho
!btC3D: is
!btC*D: Ngoc
!btC5D: Mun
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Trong chFng trnh tr9nv i tGng ListBox 7u gi? &et &Dng c2c chu\i myStrings .; &et
Li#n th;nh .i9n ctr #& s chu\i Gc ch4a trong &Dng myStrings.
*h$ng ta khfi tBo &et &Dng ti a 2-0 chu\i nh sauu
myStrings = new String[256];
1hmn cn 7Bi ca Le khfi 5Wng 7; th9& c2c chu\i Gc truV`n .;o tha& sv .; Fn giDn 5ong
7/nh 7aC foreach 3 7hV tJng th;nh Chmn trong &Dng tha& s a .;o myStrings
2hi +h3u N#u ch$ng ta kh>ng Li#t s 7Gng Lao nhi9u tha& s Gc truV`n .;o ChFng
th4cv ch$ng ta sE 56ng tJ khKa params nh z &> tD trong Chmn trc ca chFng.
1hFng th4c Add() ca ListBoxTest kh>ng 7;& g kh2c hFn 7; th9& &et chu\i &i .;o L9n
trong &Dng myStrings.
TuV nhi9n ChFng th4c !uan trOng ca ListBoxTest 7; Le chb &6c. Met Le chb &6c th kh>ng
cK t9n n9n ta 5ong tJ khKa thisu
public string this [int index]
Mng5Ch6M7c589Tp+%p
2)0
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
*$ Ch2C ca Le chb &6c cng tFng tW nh nh?ng thuec tInh. *h$ng cK th3 cK ChFng th4c
get() haV set() haV cD hai ChFng th4c. 1hFng th4c get() Gc thWc thi mu ti9n LYng c2ch
ki3& tra gi2 tr: Li9n ca chb &6c .; giD sE chb &6c i hQi hGC 7/v th ChFng th4c trD .` gi2
tr: i hQiu
get
{
if (index < 0 index >= myStrings.Length)
{
// x l ch mc sai
}
return myStrings[index];
}
^i .i ChFng th4c set() th mu ti9n nK sH ki3& trD U'& chb &6c ca i tGng cmn 7hV cK
.Gt !u2 s 7Gng ca c2c i tGng trong &Dng haV kh>ng. N#u gi2 tr: chb &6c hGC 7/ t4c 7;
tn tBi &et i tGng cK chb &6c tFng Fngv ChFng th4c sH L_t mu thi#t 7SC 7Bi gi2 tr: ca
i tGng n;V. TJ khKa value Gc sE 56ng 3 tha& chi#u #n tha& s a .;o trong ChgC
g2n ca thuec tInhu
set
{
if ( index >= ctr)
{
// ch mc khng tn tai
}
}
po .SVv n#u ch$ng ta .i#tu
myStrings[10] = "Hello C#;
trnh Li9n 5:ch sH gOi ChFng th4c set() ca Le chb &6c tr9n i tGng .; truV`n .;o &et
chu\i s&'##o C#t nh 7; &et tha& s ngm& :nh t9n 7; value.
4H cha "3c *7 -hf- g/n
Trong .I 56 T.Tv ch$ng ta kh>ng th3 g2n #n &et chb &6c n#u nK kh>ng cK gi2 tr:. po Kv
n#u ch$ng ta .i#tu
lbt[10] = "ah!;
*h$ng ta cK th3 .i#t i`u ki/n r;ng Luec L9n trong ChFng th4c set()v 7u ] rYng chb &6c &;
ch$ng ta truV`n .;o 7; 10 7n hFn Le #& s i tGng hi/n thi 7; 0.
pd nhi9nv ch$ng ta cK th3 sE 56ng ChFng th4c set() cho ChgC g2nv Fn giDn 7; ChDi UE 7]
nh?ng chb &6c &; ta nhSn Gc. ^3 7;& Gc i`u n;Vv ch$ng ta ChDi thaV i ChFng th4c
set() 3 ki3& tra gi2 tr: Length ca Le /& hFn 7; gi2 tr: hi/n thi ca Le #& s i tGng.
Mng5Ch6M7c589Tp+%p
2)=
NgnNgLpTrnhC#
N#u &et gi2 tr: Gc nhSC .;o cho chb &6c cha cK gi2 tr:v ch$ng ta cK th3 cSC nhSt Le #&
nh sauu
set
{
if ( index >= strings.Length)
{
// ch mc vot qu s ti da ca mng
}
else
{
strings[index] = value;
if ( ctr < index+1)
ctr = index+1;
}
}
^i`u n;V cK th3 cho ChgC ch$ng ta tBo &et &Dng ChPn &Dng c2c gi2 tr:v khi K ta cK th3 g2n
cho i tGng cK chb &6c th4 10 &; kh>ng cmn ChDi cK ChgC g2n .i i tGng trc cK chb
&6c 7; T. ^i`u n;V ho;n to;n thWc hi/n tt . Lan mu ch$ng ta z chC Ch2t &Dng 2-0 c2c
Chmn tE. po K chb cmn truV cSC #n i tGng cK chb &6c tJ 0 #n 2-- 7; hGC 7/. "hi K ta cK
th3 .i#tu
lbt[10] = "ah!;
"#t !uD thWc hi/n tFng tW nh sauu
!btC0D: ,e!!o
!btC1D: =ni$erse
!btC)D: >ho
!btC3D: is
!btC*D: Ngoc
!btC5D: Mun
!btC+D:
!btC6D:
!btC7D:
!btC9D:
!btC10D: Hah5I
S> 23ng ki0u cha s kh/c
Ng>n ng? *@ kh>ng i hQi ch$ng ta ChDi sE 56ng gi2 tr: nguV9n 7;& chb &6c trong &et
tSC hGC. "hi ch$ng ta tBo &et 7C cK ch4a &et tSC hGC .; tBo &et Le chb &6cv Le chb &6c
Mng5Ch6M7c589Tp+%p
2)A
NgnNgLpTrnhC#
n;V cK th3 sE 56ng ki3u chu\i 7;& chb &6c haV nh?ng ki3u 5? 7i/u kh2c ngo;i ki3u s nguV9n
thng 5ong.
Trong trng hGC 7C ListBoU tr9nv ch$ng ta &un 5ong gi2 tr: chu\i 7;& chb &6c cho &Dng
string. I 56 T.10 sau sE 56ng chu\i 7;& chb &6c cho 7C ListBoU. 8e chb &6c gOi ChFng
th4c findString() 3 7hV &et gi2 tr: trD .` 7; &et s nguV9n 5Wa tr9n chu\i Gc cung chC.
+u ] rYng f PV Le chb &6c Gc nBC chng .; Le chb &6c tJ .I 56 T.T trc .cn cn tn
tBi.
89 d: y(1$) NLp +hKng +hZ m:+(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
namespace ProgrammingCSharp
{
using System;
// tao lp List Box
public class ListBoxTest
{
// khi tao vi nhng chui
public ListBoxTest(params string[] initialStrings)
{
// cp pht chui
strings = new String[256];
// copy cc chui truyn vo
foreach( string s in initialStrings)
{
strings[ctr++] = s;
}
}
// thm mt chui vo cui danh sch
public void Add( string theString)
{
strings[ctr] = theString;
ctr++;
}
// b ch mc
public string this [ int index ]
{
get
{
if (index < 0 index >= strings.Length)
Mng5Ch6M7c589Tp+%p
2)T
NgnNgLpTrnhC#
{
// ch mc khng hop l
}
return strings[index];
}
set
{
strings[index] = value;
}
}
private int findString( string searchString)
{
for(int i = 0; i < strings.Length; i++)
{
if ( strings[i].StartsWith(searchString))
{
return i;
}
}
return -1;
}
// b ch mc dng chui
public string this [string index]
{
get
{
if (index.Length == 0)
{
// x l khi chui rng
}
return this[findString(index)];
}
set
{
strings[findString(index)] = value;
}
}
// ly s chui trong mng
Mng5Ch6M7c589Tp+%p
2N0
NgnNgLpTrnhC#
public int GetNumEntries()
{
return ctr;
}
// bin thnh vin lu gi mng cc chui
private string[] strings;
// bin thnh vin lu gia s chui trong mng
private int ctr = 0;
}
public class Tester
{
static void Main()
{
// tao di tong List Box v sau d khi tao
ListBoxTest lbt = new ListBoxTest("Hello,World);
// thm cc chui vo
lbt.Add("Who);
lbt.Add("is);
lbt.Add("Ngoc);
lbt.Add("Mun);
// truy cp b ch mc
string str = "Universe;
lbt[1] = str;
lbt["Hell] = "Hi;
//lbt["xyzt] = "error!;
// ly tt c cc chui ra
for(int i = 0; i < lbt.GetNumEntries();i++)
{
Console.WriteLine("lbt[{0}] = {1}, i, lbt[i]);
}
}
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
!btC0D: ,i
!btC1D: =ni$erse
!btC)D: >ho
Mng5Ch6M7c589Tp+%p
2N1
NgnNgLpTrnhC#
!btC3D: is
!btC*D: Ngoc
!btC5D: Mun
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
I 56 T.10 th tFng tW nh .I 56 T.T ngoBi trJ .i/c th9& .;o &et chb &6c Gc nBC chng
7hV tha& s chb &6c 7; chu\i .; ChFng th4c findString() tBo ra 3 7hV chb &6c nguV9n tJ
chu\i.
1hFng th4c findString() Fn giDn 7; 7aC &Dng strings cho #n khi n;o t& Gc chu\i cK k]
tW mu ti9n trong .i k] tW mu ti9n ca ch6i tha& s. N#u t& thhV th trD .` chb &6c ca
chu\iv trng hGC ngGc 7Bi trD .` i1.
Nh ch$ng ta thhV trong h;& Main()v 7/nh truV cSC chb &6c th4 hai 5ong chu\i 7;& tha& s
chb &6cv nh z 7;& .i s nguV9n trcu
lbt["hell] = "Hi;
"hi K nBC chng chb &6c sH Gc gOiv sau khi ki3& tra chu\i hGC 7/ t4c 7; kh>ng r\ngv chu\i
n;V sH Gc truV`n .;o cho ChFng th4c findString()v k#t !uD findString() trD .` 7; &et chb
&6c nguV9nv s nguV9n n;V sH Gc sE 56ng 7;& chb &6cu
return this[ findString(index)];
I 56 T.10 tr9n tn tBi 7\i khi &et chu\i truV`n .;o kh>ng Cho hGC .i Lht c4 chu\i n;o trong
&Dngv khi K gi2 tr: trD .` 7; 1. Sau K gi2 tr: n;V Gc 5ong 7;& chb &6c .;o chu\i &Dng
strings. ^i`u n;V sH tBo ra &et ngoBi 7/ {System.NullReferenceException}. Trng hGC n;V
UDV ra khi ch$ng ta LQ hu co&&'nt ca 7/nhu
lbt["xyzt] = error!;
*2c trng hGC Ch2t sinh 7\i n;V cmn ChDi Gc 7oBi LQv PV cK th3 7; L;i tSC cho ch$ng ta 7;&
th9& .; .i/c n;V h#t s4c cmn thi#t.
Yiao 2i+n tT- h@-
M>i trng .NET cung chC nh?ng giao 5i/n chuMn cho .i/c 7i/t k9v so s2nhv .; tBo c2c tSC
hGC. Met s c2c giao 5i/n trong s K Gc 7i/t k9 trong LDng T.2 sauu
Gi6o 'iCn Mc Xec4
IEnumerable +i/t k9 th>ng !ua &et tSC hGC LYng c2ch sE 56ng
foreach.
ICollection ThWc thi Lfi tht cD c2c tSC hGC 3 cung chC ChFng
th4c CopyTo() cng nh c2c thuec tInh Countv
ISReadOnlyv ISSynchronizedv .; SyncRoot.
IComparer So s2nh gi?a hai i tGng 7u gi? trong tSC hGC 3
s_C U#C c2c i tGng trong tSC hGC.
<List SE 56ng Lfi nh?ng tSC hGC &Dng Gc chb &6c
Mng5Ch6M7c589Tp+%p
2N2
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
IDictionary pong trong c2c tSC hGC 5Wa tr9n khKa .; gi2 tr: nh
Hashtable .; Sort'5List.
IDictionaryEnumerator *ho ChgC 7i/t k9 5ong cPu 7/nh foreach !ua tSC hGC
h\ trG IDictionary.
4*ng y(2) 2iao diIn +ho tp hHp(
Yiao 2i+n 8Enu"#raI,#
*h$ng ta cK th3 h\ trG c$ Ch2C foreach trong 7C ListBoxTest LYng .i/c thWc thi giao
5i/n IEnumerator. Ziao 5i/n n;V chb cK &et ChFng th4c 5uV nhht 7; GetEnumerator()v c>ng
.i/c ca ChFng th4c 7; trD .` &et sW thWc thi ac Li/t ca IEnumerator. po .SVv ng? nghda
ca 7C Enumerable 7; nK cK th3 cung chC &et Enumeratoru
public IEnumerator GetEnumerator()
{
return (IEnumerator) new ListBoxEnumerator(this);
}
Enumerator ChDi thWc thi nh?ng ChFng th4c .; thuec tInh IEnumerator. *h$ng cK th3 Gc
thWc thi trWc ti#C trong 7C ch4a {trong trng hGC n;V 7; 7C ListBoxTest} haV Lfi &et 7C
ChPn Li/t kh2c. *2ch ti#C cSn th4 hai thng Gc sE 56ng nhi`u hFnv 5o ch$ng Gc Kng
gKi trong 7C Enumerator hFn 7; .i/c ChPn .;o trong c2c 7C ch4a.
po 7C Enumerator Gc U2c :nh cho 7C ch4av . th'o nh tr9n th 7C ListBoxEnumerator
ChDi Li#t nhi`u .` 7C ListBoxTest. N9n ch$ng ta ChDi tBo cho nK &et sW thWc thi ri9ng ch4a
L9n trong 7C ListBoxTest. +u ] rYng ChFng th4c Z'tEnumerator truV`n i tGng List-
BoxTest hi/n thi {this} cho enumerator. ^i`u n;V cho ChgC enumerator cK th3 7i/t k9 Gc
c2c th;nh Chmn trong tSC hGC ca i tGng ListBoxTest. PV 7C thWc thi Enumerator 7;
ListBoxEnumeratorv PV 7; &et 7C private Gc :nh nghda L9n trong 7C ListBoxTest. +C
n;V thWc thi Fn giDn Lao g& &et thuec tInh publicv .; hai ChFng th4c public 7;
MoveNext()v .; Reset(). ^i tGng ListBoxTest Gc truV`n .;o nh &et i &6c ca Le
khfi tBo. PV nK Gc g2n cho Li#n th;nh .i9n myLBT. Trong h;& khfi tBo n;V cng thWc
hi/n thi#t 7SC gi2 tr: Li#n th;nh .i9n index 7; i1v chb ra rYng cha L_t mu thWc hi/n .i/c
enumerator i tGngu
public ListBoxEnumerator(ListBoxTest lbt)
{
this.lbt = lbt;
index = -1;
}
1hFng th4c MoveNext() gia tqng index .; sau K ki3& tra 3 D& LDo rYng .i/c thWc hi/n
kh>ng .Gt !u2 s Chmn tE trong tSC hGC ca i tGngu
public bool MoveNext()
Mng5Ch6M7c589Tp+%p
2N)
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
{
index++;
if (index >= lbt.strings.Length)
return false;
else
return true;
}
1hFng th4c IEnumerator.Reset() kh>ng 7;& g cD nhng thi#t 7SC 7Bi gi2 tr: ca index 7; i1.
Thuec tInh Current trD .` i tGng chu\i hi/n h;nh. ^K 7; tht cD nh?ng .i/c cmn 7;& cho 7C
ListBoxTest thWc thi &et giao 5i/n IEnumerator. *Pu 7/nh foreach sH Gc gOi 3 '& .`
&et enumeratorv .; sE 56ng nK 3 7i/t k9 7mn 7Gt !ua c2c th;nh Chmn trong &Dng. Sau PV 7;
to;n Le chFng trnh &inh hOa cho .i/c thWc thi tr9n.
89 d: y(11) 0Lo #op ListBox ha trH enumerator.
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
namespace ProgrammingCSharp
{
using System;
using System.Collections;
// tao mt control don gin
public class ListBoxTest: IEnumerable
{
// lp thuc thi ring ListBoxEnumerator
private class ListBoxEnumerator : IEnumerator
{
public ListBoxEnumerator(ListBoxTest lbt)
{
this.lbt = lbt;
index = -1;
}
// gia tng index v dm bo gi tri ny hop l
public bool MoveNext()
{
index++;
if (index >= lbt.strings.Length)
return false;
else
return true;
}
Mng5Ch6M7c589Tp+%p
2NN
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
public void Reset()
{
index = -1;
}
public object Current
{
get
{
return( lbt[index]);
}
}
private ListBoxTest lbt;
private int index;
}
// tr v Enumerator
public IEnumerator GetEnumerator()
{
return (IEnumerator) new ListBoxEnumerator(this);
}
// khi tao listbox vi chui
public ListBoxTest (params string[] initStr)
{
strings = new String[10];
// copy t mng chui tham s
foreach (string s in initStr)
{
strings[ctr++] = s;
}
}
public void Add(string theString)
{
strings[ctr] = theString;
ctr++;
}
// cho php truy cp ging nh mng
public string this[int index]
{
get
Mng5Ch6M7c589Tp+%p
2N-
NgnNgLpTrnhC#
{
if ( index < 0 index >= strings.Length)
{
// x l index sai
}
return strings[index];
}
set
{
strings[index] = value;
}
}
// s chui nm gi
public int GetNumEntries()
{
return ctr;
}
private string[] strings;
private int ctr = 0;
}
public class Tester
{
static void Main()
{
ListBoxTest lbt = new ListBoxTest("Hello, "World);
lbt.Add("What);
lbt.Add("Is);
lbt.Add("The);
lbt.Add("C);
lbt.Add("Sharp);
string subst = "Universe;
lbt[1] = subst;
// truy cp tt c cc chui
int count =1;
foreach (string s in lbt)
{
Console.WriteLine("Value {0}: {1},count, s);
count++;
Mng5Ch6M7c589Tp+%p
2N0
NgnNgLpTrnhC#
}
}
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
2a!ue 1: ,e!!o
2a!ue ): =ni$erse
2a!ue 3: >hat
2a!ue *: 8s
2a!ue 5: he
2a!ue +: C
2a!ue 6: Shar&
2a!ue 7:
2a!ue 9:
2a!ue 10:
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
*hFng trnh thWc hi/n LYng c2ch tBo ra &et i tGng ListBoxTest &i .; truV`n hai chu\i
.;o cho Le khfi 5Wng. "hi &et i tGng Gc tBo ra th &Dng ca chu\i Gc :nh nghda cK
kIch thc 10 chu\i. Nq& chu\i sau Gc a .;o LYng ChFng th4c Add(). ; chu\i th4 hai
sau K Gc cSC nhSt 7Bi gi2 tr: &i. SW thaV i 7n nhht ca chFng trnh trong Chi9n LDn
n;V 7; cPu 7/nh foreach Gc gOi 3 truV cSC tJng chu\i trong ListBoU. ng 7aC foreach tW
eng sE 56ng giao 5i/n IEnumerator LYng c2ch gOi ChFng th4c GetEnumerator(). Met i
tGng ListBoxEnumerator Gc tBo ra .; gi2 tr: index i1 Gc thi#t 7SC trong Le khfi tBo.
ng 7aC foreach sau K gOi ChFng th4c MoveNext()v khi K index sH Gc gia tqng #n 0
.; trD .` true. "hi K foreach sE 56ng thuec tInh Current 3 nhSn 7Bi chu\i hi/n h;nh.
Thuec tInh Current gOi chb &6c ca ListBoU .; nhSn 7Bi chu\i Gc 7u tr? tBi .: trI 0. *hu\i
n;V Gc g2n cho Li#n s Gc :nh nghda trong .ng 7aCv .; chu\i n;V Gc hi3n th: ra &;n
hnh conso7'. ng 7aC ti#C t6c thWc hi/n tumn tW tJngt Lcu MoveNext()v Current{}v hi3n th:
chu\i cho #n khi tht cD c2c chu\i trong list LoU Gc hi3n th:. Trong &inh hOa n;V ch$ng ta
khai L2o &Dng chu\i cK 10 Chmn tEv n9n trong k#t !uD ta thhV chu\i f .: trI Av Tv 10 kh>ng cK
nei 5ung.
Yiao 2i+n 8%o,,#ction
Met giao 5i/n !uan trOng kh2c cho nh?ng &Dng .; cho tht cD nh?ng tSC hGC Gc cung
chC Lfi .NET %ra&'(ork 7; ICollection. ICollection cung chC Ln thuec tInhu Countv
IsReadOnlyv IsSynchronizedv .; SyncRoot. Ngo;i ra ICollection cng cung chC &et ChFng
Mng5Ch6M7c589Tp+%p
2N=
NgnNgLpTrnhC#
th4c CopyTo(). Thuec tInh thng Gc sE 56ng 7; Countv thuec tInh n;V trD .` s th;nh
Chmn trong tSC hGCu
for(int i = 0; i < myIntArray.Count; i++)
{
//...
}
PV ch$ng ta sE 56ng thuec tInh Count ca myIntArray 3 U2c :nh s i tGng cK th3
Gc sE 56ng trong &Dng.
Yiao 2i+n IComparer
Ziao 5i/n IComparer cung chC ChFng th4c Compare()v 3 so s2nh hai Chmn tE trong &et
tSC hGC cK th4 tW. 1hFng th4c Compare() thng Gc thWc thi LYng c2ch gOi ChFng th4c
CompareTo() ca &et trong nh?ng i tGng. CompareTo() 7; ChFng th4c cK trong tht cD
i tGng thWc thi IComparable. N#u ch$ng ta &un tBo ra nh?ng 7C cK th3 Gc s_C U#C
L9n trong &et tSC hGC th ch$ng ta cmn thi#t ChDi thWc thi IComparable.
.NET %ra&'(ork cung chC &et 7C Comparer thWc thi IComparable .; cung chC &et s thWc
thi cmn thi#t. 1hmn 5anh s2ch &Dng sau sH i .;o chi ti#t .i/c thWc thi IComparable.
ganh s/ch "=ng
Met .hn ` hBn ch# ca ki3u 5? 7i/u &Dng 7; kIch thc c :nh. N#u ch$ng ta kh>ng Li#t
trc s 7Gng i tGng trong &et &Dng sH Gc 7u gi?v th sH khK khqn . cK th3 ch$ng ta
khai L2o kIch thc ca &Dng !u2 nhQ {.Gt !u2 kIch thc 7u tr? ca &Dng} hoac 7; kIch
thc !u2 7n {5cn #n 7zng ChI Le nh}. *hFng trnh ca ch$ng ta cK th3 hQi ngi 5ong .`
kIch thcv hoac thu nh?ng inCut tJ trong &et ('L sit'.TuV nhi9n .i/c U2c :nh s 7Gng ca
i tGng trong nh?ng s'ssion cK tInh chht tFng t2c eng 7; kh>ng thIch hGC. i/c sE 56ng
&Dng cK kIch thc c :nh 7; kh>ng thIch hGC cng nh 7; ch$ng ta kh>ng th3 o2n trc
Gc kIch thc ca &Dng cmn thi#t.
+C ArrayList 7; &et ki3u 5? 7i/u &Dng &; kIch thc ca nK Gc gia tqng &et c2ch
eng th'o V9u cmu. ArrayList cung chC &et s ChFng th4c .; nh?ng thuec tInh cho nh?ng
thao t2c 7i9n !uan #n &Dng. Met .;i ChFng th4c .; thuec tInh !uan trOng ca ArrayList
Gc 7i/t k9 trong LDng T.) nh sauu
P4/Nng t4`c, t4@~c ten4 Mc Xec4
Adapter() 1hFng th4c static tBo &et (raCC'r ArrayList cho i
tGng <List
FixedSize() 1hFng th4c static nBC chng trD .` sanh s2ch i tGng
nh 7; &et (raCC'r. panh s2ch cK kIch thc c :nhv c2c
th;nh Chmn ca nK cK th3 Gc sEa ch?a nhng kh>ng th3
th9& haV UKa.
Mng5Ch6M7c589Tp+%p
2NA
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
ReadOnly() 1hFng th4c static nBC chng trD .` 5anh s2ch 7C nh 7;
&et (raCC'rv chb cho ChgC Oc.
Repeat() 1hFng th4c static trD .` &et ArrayList &; nh?ng th;nh
Chmn ca nK Gc sao chgC .i gi2 tr: U2c :nh.
Synchronized() 1hFng th4c static trD .` 5anh s2ch (raCC'r Gc thr'a5i
saf'
Capacity Thuec tInh 3 g't haV s't s th;nh Chmn trong ArrayList.
Count Thuec tInh nhSn s th;nh Chmn hi/n thi trong &Dng
IsFixedSize Thuec tInh ki3& tra U'& kIch thc ca ArrayList cK c
:nh haV kh>ng
IsReadOnly Thuec tInh ki3& tra U'& ArrayList cK thuec tInh chb Oc
haV kh>ng.
IsSynchronized Thuec tInh ki3& tra U'& ArrayList cK thr'a5isaf' haV
kh>ng
Item() Thi#t 7SC haV truV cSC th;nh Chmn trong &Dng tBi .: trI U2c
:nh. ^PV 7; Le chb &6c cho 7C ArrayList.
SyncRoot Thuec tInh trD .` i tGng cK th3 Gc sE 56ng 3 ng
Le truV cSC #n ArrayList
Add() 1hFng th4c public 3 th9& &et i tGng .;o ArrayList
AddRange() 1hFng th4c public 3 th9& nhi`u th;nh Chmn ca &et
ICollection .;o cui ca ArrayList
BinarySearch() 1hFng th4c nBC chng public sE 56ng t& ki#& nh: ChSn
3 :nh .: &et th;nh Chmn U2c :nh trong ArrayList Gc
s_C U#C.
Clear() Ka tht cD c2c th;nh Chmn tJ ArrayList
Clone() TBo &et LDn coCV
Contains() "i3& tra &et th;nh Chmn U'& cK ch4a trong &Dng haV
kh>ng
CopyTo() 1hFng th4c public nBC chng 3 sao chgC &et ArrayList
#n &et &Dng &et chi`u.
GetEnumerator() 1hFng th4c public nBC chng trD .` &et enumerator 5ong
3 7aC !ua &Dng
GetRange() Sao chgC &et 5zV c2c th;nh Chmn #n &et ArrayList &i
IndexOf() 1hFng th4c public nBC chng trD .` chb &6c .: trI mu ti9n
Uuht hi/n gi2 tr:
Insert() *hn &et th;nh Chmn .;o trong ArrayList
InsertRange(0 *hn &et 5zV tSC hGC .;o trong ArrayList
Mng5Ch6M7c589Tp+%p
2NT
NgnNgLpTrnhC#
LastIndexOf() 1hFng th4c public nBC chng trD .` chb &6c tr: trI cui
cong Uuht hi/n gi2 tr:.
Remove() Ka sW Uuht hi/n mu ti9n ca &et i tGng U2c :nh.
RemoveAt() Ka &et th;nh Chmn f .: trI U2c :nh.
RemoveRange() Ka &et 5zV c2c th;nh Chmn.
Reverse() ^Do th4 tW c2c th;nh Chmn trong &Dng.
SetRange() Sao chgC nh?ng th;nh Chmn ca tSC hGC !ua 5zV nh?ng
th;nh Chmn trong ArrayList.
Sort() S_C U#C ArrayList.
ToArray() Sao chgC nh?ng th;nh Chmn ca ArrayList #n &et &Dng
&i.
TrimToSize() Thi#t 7SC kIch thc thSt sW ch4a c2c th;nh Chmn trong
ArrayList
4*ng y(F) C,+ ph;<ng thP+ N- th>Y+ t9nh +7a "rrayList
"hi tBo i tGng ArrayListv kh>ng cmn thi#t ChDi :nh nghda s i tGng &; nK sH ch4a.
*h$ng ta th9& .;o ArrayList LYng c2ch 5ong ChFng th4c Add()v .; 5anh s2ch sH !uan 7]
nh?ng i tGng L9n trong &; nK 7u gi?. I 56 T.12 sau &inh hOa sE 56ng ArrayList.
89 d: y(12) Sn d:ng "rrayList(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
namespace ProgrammingCSharp
{
using System;
using System.Collections;
// mt lp don gin d lu tr trong mng
public class Employee
{
public Employee(int empID)
{
this.empID = empID;
}
public override string ToString()
{
return empID.ToString();
}
public int EmpID
{
get
{
Mng5Ch6M7c589Tp+%p
2-0
NgnNgLpTrnhC#
return empID;
}
set
{
empID = value;
}
}
private int empID;
}
public class Tester
{
static void Main()
{
ArrayList empArray = new ArrayList();
ArrayList intArray = new ArrayList();
// da vo mng
for( int i = 0; i < 5; i++)
{
empArray.Add( new Employee(i+100));
intArray.Add( i*5 );
}
// in tt c ni dung
for(int i = 0; i < intArray.Count; i++)
{
Console.Write("{0} ,intArray[i].ToString());
}
Console.WriteLine("\n);
// in tt c ni dung ca mng
for(int i = 0; i < empArray.Count; i++)
{
Console.Write("{0} ,empArray[i].ToString());
}
Console.WriteLine("\n);
Console.WriteLine("empArray.Count: {0}, empArray.Count);
Console.WriteLine("empArray.Capacity: {0}, empArray.Capacity);
}
}
}
Mng5Ch6M7c589Tp+%p
2-1
NgnNgLpTrnhC#
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
0 5 10 15 )0
100 101 10) 103 10*
e#&Brra'.Count: 5
e#&Brra'.Ca&acit': 1+
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
i 7C Array ChDi :nh nghda s i tGng &; &Dng sH 7u gi?. N#u c th9& c2c th;nh Chmn
.;o trong &Dng .Gt !u2 kIch thc &Dng th 7C &Dng sH Ch2t sinh ra ngoBi 7/. i
ArrayList th kh>ng cmn ChDi khai L2o s i tGng &; nK 7u gi?. ArrayList cK &et thuec
tInh 7; Capacityv a ra s th;nh Chmn &; ArrayList cK th3 7u tr?u
public int Capacity {virtual get; virtual set;}
Mac :nh gi2 tr: ca Capacity 7; 10v n#u khi th9& th;nh Chmn th4 1= .;o th Capacity tW eng
nhPn >i 79n 7; )2. N#u ch$ng ta thaV i .ng 7aC nh sauu
for( int i = 0; i < 1; i++)
th k#t !uD ging nh sauu
0 5 10 15 20 25 30 35 40 45 50 55 60 65 0 5 80
5 6 8 9 10 11 12 13 14 15 16 1 18 19 20 21
empArray.Capacity: 32
*h$ng ta cK th3 7;& LYng taV 3 thaV i gi2 tr: ca Capacity LYng haV 7n hFn gi2 tr: Count.
N#u thi#t 7SC gi2 tr: ca Capacity nhQ hFn gi2 tr: ca Countv th chFng trnh sH Ch2t sinh ra
ngoBi 7/ cK ki3u nh sau ArgumentOutOfRangeException.
ThVc thi IComparable
Zing nh tht cD nh?ng tSC hGCv ArrayList cng thWc thi ChFng th4c Sort() 3 cho ChgC
ch$ng ta thWc hi/n .i/c s_C U#C Lht c4 i tGng n;o thWc thi IComparable. Trong .I 56 k#
ti#C saov ch$ng ta sH L sung i tGng Employee 3 thWc thi IComparableu
public class Employee: IComparable
^3 thWc thi giao 5i/n IComparablev i tGng Employee ChDi cung chC &et ChFng th4c
CompareTo()u
public int CompareTo(Object o)
{
Employee r = (Employee) o;
return this.empID.CompareTo(r.empID);
}
1hFng th4c CompareTo() 7hV &et i tGng 7;& tha& sv i tGng Employee ChDi so s2nh
chInh nK .i i tGng n;V .; trD .` i1 n#u nK nhQ hFn i tGng n;Vv 1 n#u nK 7n hFnv .;
cui cong 7; gi2 tr: 0 n#u cD hai i tGng LYng nhau. i/c U2c :nh th4 tW ca Employee
Mng5Ch6M7c589Tp+%p
2-2
NgnNgLpTrnhC#
th>ng !ua th4 tW ca empID 7; &et s nguV9n. po .SV .i/c so s2nh sH Gc V !uV`n cho
th;nh .i9n empIDv PV 7; s nguV9n .; nK sH sE 56ng ChFng th4c so s2nh &ac :nh ca ki3u
5? 7i/u nguV9n. ^i`u n;V tFng Fng .i .i/c so s2nh hai s nguV9n. +$c n;V ch$ng ta co
th3 thWc hi/n .i/c so s2nh hai i tGng Employee. ^3 thhV Gc c2ch s_C U#Cv ch$ng ta cmn
thi#t ChDi th9& .;o c2c s nguV9n .;o trong &Dng Employeev c2c s nguV9n n;V Gc 7hV
&et c2ch ngcu nhi9n. ^3 tBo &et gi2 tr: ngcu nhi9nv ch$ng ta cmn thi#t 7SC &et i tGng ca
7C Randomv 7C n;V sH trD .` &et s giD s ngcu nhi9n. 1hFng th4c Next() Gc nBC
chngv trong K &et Chi9n LDn cho ChgC ch$ng ta truV`n .;o &et s nguV9n th3 hi/n &et s
ngcu nhi9n 7n nhht &ong &un. Trong trng hGC n;V ch$ng ta a .;o s 10 3 tBo ra
nh?ng s ngcu nhi9n tJ 0 #n 10u
Random r = new Random();
r.Next(10);
I 56 &inh hOa T.1) tBo ra &et &Dng c2c s nguV9n .; &et &Dng Employeev sau K a .;o
nh?ng s ngcu nhi9nv ri in k#t !uD. Sau K s_C U#C cD hai &Dng .; in k#t !uD cui cong.
89 d: y(1F) Srp _@p m*ng sc ng>y%n N- m*ng /mp#oy''(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
namespace ProgrammingCSharp
{
using System;
using System.Collections;
// mt lp don gin d lu tr trong mng
public class Employee : IComparable
{
public Employee(int empID)
{
this.empID = empID;
}
public override string ToString()
{
return empID.ToString();
}
public int EmpID
{
get
{
return empID;
}
set
Mng5Ch6M7c589Tp+%p
2-)
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
{
empID = value;
}
}
// So snh doc delegate cho Employee
// Employee s dng phong thc so snh
// mc dinh ca s nguyn
public int CompareTo(Object o)
{
Employee r = (Employee) o;
return this.empID.CompareTo(r.empID);
}
private int empID;
}
public class Tester
{
static void Main()
{
ArrayList empArray = new ArrayList();
ArrayList intArray = new ArrayList();
Random r = new Random();
// da vo mng
for( int i = 0; i < 5; i++)
{
empArray.Add( new Employee(r.Next(10)+100));
intArray.Add( r.Next(10) );
}
// in tt c ni dung
for(int i = 0; i < intArray.Count; i++)
{
Console.Write("{0} ,intArray[i].ToString());
}
Console.WriteLine("\n);
// in tt c ni dung ca mng
for(int i = 0; i < empArray.Count; i++)
{
Console.Write("{0} ,empArray[i].ToString());
}
Mng5Ch6M7c589Tp+%p
2-N
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
Console.WriteLine("\n);
// sp xp v hin thi mng nguyn
intArray.Sort();
for(int i = 0; i < intArray.Count; i++)
{
Console.Write("{0} , intArray[i].ToString());
}
Console.WriteLine("\n);
// sp xp lai mng Employee
empArray.Sort();
// hin thi tt c ni dung ca mng Employee
for(int i = 0; i < empArray.Count; i++)
{
Console.Write("{0} , empArray[i].ToString());
}
Console.WriteLine("\n);
}
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
7 5 6 3 3
105 103 106 10* 10)
3 3 5 6 7
10) 103 10* 105 106
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
"#t !uD chb ra rYng &Dng s nguV9n .; &Dng Employee Gc tBo ra .i nh?ng s ngcu nhi9nv
.; sau K ch$ng Gc s_C U#C .; Gc hi3n th: 7Bi gi2 tr: &i th'o th4 tW sau khi s_C U#C.
ThVc thi IComparer
"hi ch$ng ta gOi ChFng th4c Sort() trong ArrayList th ChFng th4c &ac :nh ca
IComparer Gc gOiv nK sE 56ng ChFng Ch2C uickSort 3 gOi thWc thi IComparable
ChFng th4c CompareTo() trong &\i th;nh Chmn ca ArrayList.
*h$ng ta cK th3 tW 5o tBo &et thWc thi ca IComparer ri9ngv i`u n;V cho ChgC ta cK th3 toV
chOn c2ch thWc hi/n .i/c s_C U#C c2c th;nh Chmn trong &Dng. Trong .I 56 &inh hOa ti#C sau
PVv ch$ng ta sH th9& trng th4 hai .;o trong Employee 7; yearsOfSvc. ; Employee cK th3
Gc s_C U#C th'o hai 7oBi 7; empID hoac 7; yearsOfSvc.
Mng5Ch6M7c589Tp+%p
2--
NgnNgLpTrnhC#
^3 thWc hi/n Gc i`u n;Vv ch$ng ta cmn thi#t ChDi tBo 7Bi sW thWc thi ca IComparer 3
truV`n cho ChFng th4c Sort() ca &Dng ArrayList. +C IComparer EmployeeComparer Li#t
.` nh?ng i tGng Employee .; cng Li#t c2ch s_C U#C ch$ng. EmployeeComparer cK &et
thuec tInhv WhichComparision cK ki3u 7; Employee.EmployeeComparer.ComparisionTypeu
public Employee.EmployeeComparer.ComparisionType WhichComparision
{
get
{
return whichComparision;
}
set
{
wichComparision = value;
}
}
ComparisionType 7; ki3u 7i/t k9 .i hai gi2 tr:v empID haV yearsOfSvcv hai gi2 tr: n;V chb ra
rYng ch$ng ta &un s_C U#C th'o <p haV s nq& Ch6c .6u
public enum ComparisionType
{
EmpID,
rs
};
Trc khi gOi Sort()v ch$ng ta sH tBo th3 hi/n ca EmployeeComparer .; thi#t 7SC gi2 tr: cho
thuec tInh ki3u ComparisionTypeu
Employee.EmployeeComparer c = Employee.GetComparer();
c.WhichComparision = Employee.EmployeeComparer.ComparisionType.EmpID;
empArray.Sort(c);
"hi ch$ng ta gOi Sort() th ArrayList sH gOi ChFng th4c Compare() trong Employee-
Comparerv #n 7Gt nK sH V !uV`n .i/c so s2nh cho ChFng th4c Employee.CompareTo()v
.; truV`n .;o thuec tInh WhichComparision ca nKu
Compare(object lhs, object rhs)
{
Employee l = (Employee) lhs;
Employee r = (Employee) rhs;
return l.CompareTo(r.WhichComparision);
}
^i tGng Employee ChDi thWc thi &et Chi9n LDn ri9ng ca CompareTo() 3 thWc hi/n .i/c so
s2nhu
Mng5Ch6M7c589Tp+%p
2-0
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
public int CompareTo(Employee rhs,
Employee.EmployeeComparer.ComparisionType which)
{
switch (which)
{
case Employee.EmployeeComparer.ComparisionType.EmpID:
return this.empID.CompareTo( rhs.empID);
case Employee.EmployeeComparer.ComparisionType.rs:
return this.yearsOfSvc.CompareTo(rhs.yearsOfSvc);
}
return 0;
}
Sau PV 7; .I 56 T.1N th3 hi/n mV .i/c thWc thi IComparer 3 cho ChgC thWc hi/n s_C U#C
th'o hai ti9u chuMn kh2c nhau. Trong .I 56 n;V &Dng s nguV9n Gc UKa i 3 7;& cho Fn
giDn hKa .I 56.
89 d: y(1G) Srp _@p m*ng th'o ti%> +h>n lD N- njm +ng t,+(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
namespace ProgrammingCSharp
{
using System;
using System.Collections;
//lp don gin d lu tr trong mng
public class Employee : IComparable
{
public Employee(int empID)
{
this.empID = empID;
}
public Employee(int empID, int yearsOfSvc)
{
this.empID = empID;
this.yearsOfSvc = yearsOfSvc;
}
public override string ToString()
{
return "ID: +empID.ToString() + ". ears of Svc:
+ yearsOfSvc.ToString();
}
Mng5Ch6M7c589Tp+%p
2-=
NgnNgLpTrnhC#
// phong thc tnh d nhn di tong Comparer
public static EmployeeComparer GetComparer()
{
return new Employee.EmployeeComparer();
}
public int CompareTo(Object rhs)
{
Employee r = (Employee) rhs;
return this.empID.CompareTo(r.empID);
}
// thuc thi dc bit doc gi bi custom comparer
public int CompareTo(Employee rhs,
Employee.EmployeeComparer.ComparisionType which)
{
switch (which)
{
case Employee.EmployeeComparer.ComparisionType.EmpID:
return this.empID.CompareTo( rhs.empID);
case Employee.EmployeeComparer.ComparisionType.rs:
return this.yearsOfSvc.CompareTo( rhs.yearsOfSvc);
}
return 0;
}
// lp bn trong thuc thi IComparer
public class EmployeeComparer : IComparer
{
// dinh ngha kiu lit k
public enum ComparisionType
{
EmpID,
rs
};
// yu cu nhng di tong Employee tu so snh vi nhau
public int Compare( object lhs, object rhs)
{
Employee l = (Employee) lhs;
Employee r = (Employee) rhs;
return l.CompareTo(r, WhichComparision);
Mng5Ch6M7c589Tp+%p
2-A
NgnNgLpTrnhC#
}
public Employee.EmployeeComparer.ComparisionType WhichComparision
{
get
{
return whichComparision;
}
set
{
whichComparision = value;
}
}
private Employee.EmployeeComparer.ComparisionType whichComparision;
}
private int empID;
private int yearsOfSvc = 1;
}
public class Teser
{
static void Main()
{
ArrayList empArray = new ArrayList();
Random r = new Random();
// da vo mng
for(int i=0; i < 5; i++)
{
empArray.Add( new Employee(r.Next(10)+100, r.Next(20)));
}
// hin thi tt c ni dung ca mng Employee
for(int i=0; i < empArray.Count; i++)
{
Console.Write("\n{0} , empArray[i].ToString());
}
Console.WriteLine("\n);
// sp xp v hin thi mng
Employee.EmployeeComparer c = Employee.GetComparer();
c.WhichComparision =
Employee.EmployeeComparer.ComparisionType.EmpID;
Mng5Ch6M7c589Tp+%p
2-T
NgnNgLpTrnhC#
empArray.Sort(c);
// hin thi ni dung ca mng
for(int i=0; i < empArray.Count; i++)
{
Console.Write("\n{0} , empArray[i].ToString());
}
Console.WriteLine("\n);
c.WhichComparision = Employee.EmployeeComparer.ComparisionType.rs;
empArray.Sort(c);
// hin thi ni dung ca mng
for(int i=0; i < empArray.Count; i++)
{
Console.Write("\n{0} , empArray[i].ToString());
}
Console.WriteLine("\n);
}
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
8D: 100. Jears o" S$c: 1+
8D: 10). Jears o" S$c: 7
8D: 106. Jears o" S$c: 16
8D: 105. Jears o" S$c: 0
8D: 101. Jears o" S$c: 3
8D: 100. Jears o" S$c: 1+
8D: 101. Jears o" S$c: 3
8D: 10). Jears o" S$c: 7
8D: 105. Jears o" S$c: 0
8D: 106. Jears o" S$c: 16
8D: 105. Jears o" S$c: 0
8D: 101. Jears o" S$c: 3
8D: 10). Jears o" S$c: 7
8D: 100. Jears o" S$c: 1+
8D: 106. Jears o" S$c: 16
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Mng5Ch6M7c589Tp+%p
200
NgnNgLpTrnhC#
"hi mu ti9n hi3n th: k#t !uD th4 tW .Ja nhSC .;o. Trong K gi2 tr: ca empIDv .;
yearsOfSvc Gc Ch2t sinh ngcu nhi9n. "hi th4 hai hi3n th: k#t !uD sau khi s_C th'o empIDv
.; khi cui cong th3 hi/n k#t !uD Gc U#C th'o nq& Ch6c .6.
Z7ng @i (qu#u#)
[;ng Gi 7; &et tSC hGC trong K cK th4 tW .;o trc .; ra trc {%<%j}. TFng tW nh 7;
nh?ng ngi &ua .g t;uv hO U#C th;nh &et h;ngv ngi n;o .;o trc th sH &ua trc .; ra
trc. [;ng Gi 7; ki3u 5? 7i/u tt 3 !uDn 7] nh?ng ngun t;i nguV9n gii hBn. I 56v ch$ng
ta &un gfi th>ng i/C #n &et t;i nguV9n &; chb UE 7] Gc 5uV nhht &et th>ng i/C &et
7mn. "hi K ch$ng ta sH thi#t 7SC &et h;ng Gi th>ng i/C 3 UE 7] c2c th>ng i/C th'o th4 tW
a .;o.
+C ueue th3 hi/n ki3u 5? 7i/u nh tr9nv trong LDng T.N sau 7i/t k9 nh?ng ChFng th4c .;
thuec tInh th;nh .i9n.
P4/Nng t4`c, t4@~c ten4 Mc Xec4
Synchronized() 1hFng th4c static trD .` &et ueue (raCC'r Gc
thr'a5isaf'.
Count Thuec tInh trD .` s th;nh Chmn trong h;ng Gi
IsReadOnly Thuec tInh U2c :nh h;ng Gi 7; chb Oc
IsSynchronized Thuec tInh U2c :nh h;ng Gi Gc ng Le
SyncRoot Thuec tInh trD .` i tGng cK th3 Gc sE 56ng 3
ng Le truV cSC ueue.
Clear() Ka tht cD c2c th;nh Chmn trong h;ng Gi
Clone() TBo ra &et LDn sao
Contains() 2c :nh U'& &et th;nh Chmn cK trong &Dng.
CopyTo() Sao chgC nh?ng th;nh Chmn ca h;ng Gi #n &Dng
&et chi`u z tn tBi
Dequeue() Ka .; trD .` th;nh Chmn L_t mu ca h;ng Gi.
Enqueue() Th9& &et th;nh Chmn .;o h;ng Gi.
GetEnumerator() TrD .` &et enumerator cho h;ng Gi.
Peek() TrD .` Chmn tE mu ti9n ca h;ng Gi .; kh>ng UKa nK.
ToArray() Sao chgC nh?ng th;nh Chmn !ua &et &Dng &i
4*ng y(G) Nhng ph;<ng thP+ N- th>Y+ t9nh +7a >'>'(
*h$ng ta cK th3 th9& nh?ng th;nh Chmn .;o trong h;ng Gi .i ChFng th4c Enqueue .; sau
K 7hV ch$ng ra khQi h;ng Gi .i Dequeue haV LYng sE 56ng enumerator. I 56 T.1- &inh
hOa .i/c sE 56ng h;ng Gi.
89 d: y(1Q) L-m NiI+ Noi h-ng =Hi(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Mng5Ch6M7c589Tp+%p
201
NgnNgLpTrnhC#
namespace ProgrammingCSharp
{
using System;
using System.Collections;
public class Tester
{
public static void Main()
{
ueue intueue = new ueue();
// da vo trong mng
for(int i=0; i <5; i++)
{
intueue.Enqueue(i*5);
}
// hin thi hng doi
Console.Write("intueue values:\t);
PrintValues( intueue);
// xa thnh phn ra khi hng doi
Console.WriteLine("\nDequeue\t{0}, intueue.Dequeue());
// hin thi hng doi
Console.Write("intueue values:\t);
PrintValues(intueue);
// xa thnh phn khi hng doi
Console.WriteLine("\nDequeue\t{0}, intueue.Dequeue());
// hin thi hng doi
Console.Write("intueue values:\t);
PrintValues(intueue);
// Xem thnh phn du tin trong hng doi.
Console.WriteLine("\nPeek \t{0}, intueue.Peek());
// hin thi hng doi
Console.Write("intueue values:\t);
PrintValues(intueue);
}
public static void PrintValues(IEnumerable myCollection)
{
IEnumerator myEnumerator = myCollection.GetEnumerator();
while (myEnumerator.MoveNext())
Console.Write("{0} , myEnumerator.Current);
Mng5Ch6M7c589Tp+%p
202
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
Console.WriteLine();
}
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
intKueue $a!ues: 0 5 10 15 )0
DeLueue 0
intKueue $a!ues: 5 10 15 )0
DeLueue 5
intKueue $a!ues: 10 15 )0
Eeek 10
intKueue $a!ues: 10 15 )0
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Trong .I 56 n;V ArrayList Gc thaV LYng ueuev ch$ng ta cng cK th3 Enqueue nh?ng i
tGng 5o ta :nh nghda. Trong trong chFng trnh tr9n mu ti9n ta a - s nguV9n .;o trong
h;ng Gi th'o t4 tW 0 - 10 1- 20. Sau khi a .;o ta 7hV ra Chmn tE mu ti9n 7; 0 n9n h;ng Gi
cn 7Bi N s 7; - 10 1- 20v 7mn th4 hai ta 7hV ra - .; chb cn ) Chmn tE trong &Dng 10 1- 20.
*ui cong ta 5ong ChFng th4c Peek() 7; chb U'& Chmn tE mu h;ng Gi ch4 kh>ng UKa ch$ng
ra khQi h;ng Gi n9n k#t !uD cui cong h;ng Gi .cn cn ) s 7; 10 1- 20. Met i3& 7u ] 7;
7C ueue 7; &et 7C cK th3 #& Gc enumerable n9n ta cK th3 truV`n .;o ChFng th4c
PrintValues .i ki3u tha& s khai L2o IEnumerable. i/c chuV3n i n;V 7; ngm& :nh.
Trong ChFng th4c PrintValues ta gOi ChFng th4c GetEnumeratorv n9n nh rYng PV 7;
ChFng th4c Fn ca tht cD nh?ng 7C IEnumerable. "#t !uD 7; &et i tGng Enumerator
Gc trD .`v 5o K ch$ng ta cK th3 sE 56ng ch$ng 3 7i/t k9 tht cD nh?ng i tGng cK trong
tSC hGC.
Ng`n U- (stack)
Ngqn U#C 7; &et tSC hGC &; th4 tW 7; .;o trc ra sau haV .;o sao ra trc {+<%j}v tFng
nh &et chng da Gc U#C trong nh; h;ng. ^da f tr9n cong t4c 7; da U#C sau th Gc 7hV
ra trc 5o .SV da nY& 5i 2V t4c 7; da a .;o mu ti9n sH Gc 7hV ra sau cong.
[ai ChFng th4c chInh cho .i/c th9& .; UKa tJ stack 7; Push .; Popv ngo;i ra ngqn U#C cng
a ra ChFng th4c Peek tFng tW nh Peek trong h;ng Gi. 8Dng T.- sau &inh hOa c2c
ChFng th4c .; thuec tInh ca 7C Stack.
P4/Nng t4`c, t4@~c ten4 Mc Xec4
Synchronized() 1hFng th4c static trD .` &et Stack (raCC'r
Gc thr'a5isaf'.
Mng5Ch6M7c589Tp+%p
20)
NgnNgLpTrnhC#
Count Thuec tInh trD .` s th;nh Chmn trong ngqn U#C
IsReadOnly Thuec tInh U2c :nh ngqn U#C 7; chb Oc
IsSynchronized Thuec tInh U2c :nh ngqn U#C Gc ng Le
SyncRoot Thuec tInh trD .` i tGng cK th3 Gc sE 56ng
3 ng Le truV cSC Stack.
Clear() Ka tht cD c2c th;nh Chmn trong ngqn U#C
Clone() TBo ra &et LDn sao
Contains() 2c :nh U'& &et th;nh Chmn cK trong &Dng.
CopyTo() Sao chgC nh?ng th;nh Chmn ca ngqn U#C #n
&Dng &et chi`u z tn tBi
Pop() Ka .; trD .` Chmn tE mu Stack
Push() ^a &et i tGng .;o mu ngqn U#C
GetEnumerator() TrD .` &et enumerator cho ngqn U#C.
Peek() TrD .` Chmn tE mu ti9n ca ngqn U#C .; kh>ng
UKa nK.
ToArray() Sao chgC nh?ng th;nh Chmn !ua &et &Dng &i
4*ng y(Q ) Ph;<ng thP+ N- th>Y+ t9nh +7a #op Sta+1(
8a 7C ArrayListv ueuev .; Stack `u ch4a ChFng th4c nBC chng CopyTo() .; ToArray{}
53 sao chgC nh?ng th;nh Chmn ca ch$ng !ua &et &Dng. Trong trng hGC ca ngqn U#C
ChFng th4c CopyTo() sH chgC nh?ng th;nh Chmn ca ch$ng #n &Dng &et chi`u z hi/n
h?uv .; .i#t chng 79n nei 5ung ca &Dng L_t mu tBi chb &6c &; ta U2c nhSn. 1hFng th4c
ToArray{} trD .` &et &Dng &i .i nh?ng nei 5ung ca nh?ng th;nh Chmn trong &Dng.
89 d: y(1v) Sn d:ng 1ii> Sta+1(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
namespace ProgrammingCSharp
{
using System;
using System.Collections;
// lp don gin d lu tr
public class Tester
{
static void Main()
{
Stack intStack = new Stack();
// da vo ngn xp
for (int i=0; i < 8; i++)
{
intStack.Push(i*5);
Mng5Ch6M7c589Tp+%p
20N
NgnNgLpTrnhC#
}
// hin thi stack
Console.Write("intStack values:\t);
PrintValues( intStack );
// xa phn t du tin
Console.WriteLine("\nPop\t{0}, intStack.Pop());
// hin thi stack
Console.Write("intStack values:\t);
PrintValues( intStack );
// xa tip phn t khc
Console.WriteLine("\nPop\t{0}, intStack.Pop());
// hin thi stack
Console.Write("intStack values:\t);
PrintValues( intStack );
// xem thnh phn du tin stack
Console.WriteLine("\nPeek \t{0}, intStack.Peek());
// hin thi stack
Console.Write("intStack values:\t);
PrintValues( intStack );
// khai bo mng vi 12 phn t
Array targetArray = Array.CreateInstance(typeof(int), 12);
for(int i=0; i <=8; i++)
{
targetArray.SetValue(100*i, i);
}
// hin thi gi tri ca mng
Console.WriteLine("\nTarget array: );
PrintValues( targetArray );
// chp ton b stack vo mng tai vi tr 6
intStack.CopyTo( targetArray, 6);
// hin thi gi tri ca mng sau copy
Console.WriteLine("\nTarget array after copy: );
PrintValues( targetArray );
// chp ton b stack vo mng mi
Object[] myArray = intStack.ToArray();
// hin thi gi tri ca mng mi
Console.WriteLine("\nThe new array: );
PrintValues( myArray );
Mng5Ch6M7c589Tp+%p
20-
NgnNgLpTrnhC#
}
public static void PrintValues(IEnumerable myCollection)
{
IEnumerator myEnumerator = myCollection.GetEnumerator();
while (myEnumerator.MoveNext())
Console.Write("{0} , myEnumerator.Current);
Console.WriteLine();
}
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
intStack $a!ues: 35 30 )5 )0 15 10 5 0
Eo& 35
intStack $a!ues: 30 )5 )0 15 10 5 0
Eo& 30
intStack $a!ues: )5 )0 15 10 5 0
Eeek )5
intStack $a!ues: )5 )0 15 10 5 0
arget arra':
0 100 )00 300 *00 500 +00 600 700 0 0 0
arget arra' a"ter co&':
0 100 )00 300 *00 500 )5 )0 15 10 5 0
he new arra':
)5 )0 15 10 5 0
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
"#t !uD cho thhV rYng c2c &6c Gc a .;o trong ngqn U#C .; Gc 7hV ra th'o th4 tW +<%j.
Trong .I 56 sE 56ng 7C Array nh 7; 7C cF sf cho tht cD c2c 7C &Dng. TBo ra &et &Dng .i
12 Chmn tE nguV9n LYng c2ch gOi ChFng th4c tdnh CreateInstance(). 1hFng th4c n;V cK hai
tha& s &et 7; ki3u 5? 7i/u trong trng hGC n;V 7; s nguV9n int .; tha& s th4 hai th3 hi/n
kIch thc ca &Dng. MDng sau K Gc a .;o LYng ChFng th4c SetValue() ChFng th4c
n;V cng 7hV hai tha& s 7; i tGng Gc th9& .;o .; .: trI Gc th9& .;o. Nh k#t !uD
cho ta thhV ChFng th4c CopyTo() z .i#t chng 79n gi2 tr: ca &Dng tJ .: trI th4 0. +u ]
rYng ChFng th4c ToArray{} Gc thi#t k# 3 trD .` &et &Dng i tGng 5o .SV &Dng
myArray Gc khai L2o tFng 4ng.
Object[] myArray = myIntStack.ToArray();
Ki0u tF i0n
Mng5Ch6M7c589Tp+%p
200
NgnNgLpTrnhC#
TJ i3n 7; ki3u tSC hGC trong K cK hai th;nh Chmn chInh 7i9n h/ .i nhau 7; khKa .; gi2
tr:. Trong tJ i3n ng>n ng? nh jUfor5 th sW 7i9n h/ gi?a tJ {khKa} .; Chmn :nh nghda tJ
{gi2 tr:}. ^3 t& thhV gi2 tr: trong tJ i3n ch$ng ta hzV tfng tGng rYng ch$ng ta &un gi?
&et 5anh s2ch c2c th Ch ca Lang. Met hng ti#C cSn 7; at ch$ng .;o trong &et &Dng
th'o th4 tW anChaL' nh sauu
string[] stateCapitals = new string[50];
MDng stateCapital sH n_& gi? -0 th Ch Lang. M\i th Ch Gc truV cSC nh &et khoDng
5i {offs't} trong &Dng. I 56v 3 truV cSC th Ch ca Lang yrkansasv ch$ng ta cmn ChDi Li#t
Lang yrkansas nY& f .: trI th4 t trong th4 tW a7ChaL' 5anh s2ch c2c Langv n9n ta cK th3 truV
cSC nh sauu
string capitalOfArkansas = stateCapitals[3];
TuV nhi9nv thSt kh>ng thuSn ti/n khi khi truV cSC c2c th Ch ca c2c Lang th>ng !ua chu tr$c
&Dng nh .SV. ZiD sE n#u ch$ng ta &un truV cSC th Ch ca Lang Massachus'ttv kh>ng
ChDi 5 5;ng U2c :nh rYng th4 tW ca Lang 7; th4 21 th'o a7ChaL'.
Met c2ch thuSn ti/n hFn 7; 7u tr? th Ch th'o t9n ca Lang. Met tJ i3n cho ChgC ch$ng ta
7u tr? &et gi2 tr: {trong trng hGC n;V 7; th Ch} .; .i &et khKa truV cSC {7; t9n ca
Lang}. "i3u 5? 7i/u tJ i3n trong .NET %ra&'(ork cK th3 k#t hGC Lht c4 ki3u khKa n;o nh
ki3u chu\iv s nguV9nv i tGng....i Lht c4 ki3u gi2 tr: n;o {chu\iv s nguV9nv ki3u i
tGng}.
Thuec tInh !uan trOng ca &et tJ i3n tt 7; 5 th9& gi2 tr: &i .;ov .; nhanh chKng truV cSC
#n gi2 tr:. Met .;i tJ i3n th nhanh hFn .` thi gian th9& &et gi2 tr: &i .;ov &et s kh2c
th ti u cho .i/c truV cSC. Met trong &inh hOa cho ki3u tJ i3n 7; ki3u 5? 7i/u hashtable
haV cn gOi 7; LDng Lq&.
ZashtaI,#s
Hashtable 7; &et ki3u tJ i3n Gc ti u cho .i/c truV cSC Gc nhanh. Met s c2c
ChFng th4c chInh .; c2c thuec tInh ca ki3u 5? 7i/u Hashtable Gc trnh L;V trong LDng
T.0 5i.
P4/Nng t4`c, t4@~c ten4 Mc Xec4
Synchronized() 1hFng th4c static trD .` &et Hashtable (raCC'r
Gc thr'a5isaf'.
Count Thuec tInh trD .` s th;nh Chmn trong hashtable
IsReadOnly Thuec tInh U2c :nh hashtable 7; chb Oc
IsSynchronized Thuec tInh U2c :nh hashtable Gc ng Le
SyncRoot Thuec tInh trD .` i tGng cK th3 Gc sE 56ng 3
ng Le truV cSC [astaL7'.
Mng5Ch6M7c589Tp+%p
20=
NgnNgLpTrnhC#
Keys Thuec tInh trD .` &et ICollection ch4a nh?ng khKa
trong hashtable.
Values Thuec tInh trD .` &et ICollection ch4a nh?ng gi2
tr: trong hashtable.
Add() Th9& &et th;nh Chmn &i .i khKa .; gi2 tr: U2c
:nh.
Clear() Ka tht cD i tGng trong hashtable.
Item() *hb &6c cho hastaL7'
Clone() TBo ra &et LDn sao
Contains() 2c :nh U'& &et th;nh Chmn cK trong hashtable.
ContainsKey() 2c :nh U'& hashtable cK ch4a &et khKa U2c
:nh
CopyTo() Sao chgC nh?ng th;nh Chmn ca hashtable #n
&Dng &et chi`u z tn tBi
GetEnumerator() TrD .` &et enumerator cho hashtable.
GetObjectData() ThWc thi ISerializable .; trD .` 5? 7i/u cmn thi#t 3
7u tr?.
OnDeserialization ThWc thi ISerializable .; Ch2t sinh sW ki/n
deserialization khi ho;n th;nh.
Remove() Ka &et th;nh Chmn .i khKa U2c :nh.
4*ng y(v) Ph;<ng thP+ N- th>Y+ t9nh +7a #op &ashta#'(
Trong &et Hashtablev &\i gi2 tr: Gc 7u tr? trong &et .ong. M\i .ong Gc 2nh s tFng
tW nh 7; tJng offs't trong &Dng. po khKa cK th3 kh>ng ChDi 7; s nguV9nv n9n ChDi chuV3n
c2c khKa th;nh c2c khKa s 3 2nh UB #n .ong gi2 tr: Gc 2nh s. M\i khKa ChDi cung chC
ChFng th4c GetHashCode() 3 nhSn gi2 tr: &z hKa th;nh s ca nK. *h$ng ta nh rYng &Oi
th4 trong *@ `u Gc 5cn Uuht tJ 7C object. +C object cung chC &et ChFng th4c Do 7;
GetHashCode()v cho ChgC c2c 7C 5cn Uuht tW 5o k# thJa haV .i#t 7Bi. i/c thWc thi th>ng
thng ca ChFng th4c GetHashCode() i .i chu\i th Fn giDn LYng c2ch ceng c2c gi2
tr: lnico5' ca tJng k] tW 7Bi ri sau K sE 56ng to2n tE chia 7hV 5 3 nhSn 7Bi &et gi2 tr: tJ
0 #n s .ong Gc ChPn ca hashtable. Ta kh>ng cmn ChDi .i#t 7Bi ChFng th4c n;V .i ki3u
chu\i.
"hi ch$ng ta th9& gi2 tr: .;o Hashtable th Hashtable sH gOi ChFng th4c GetHashCode()
cho &\i gi2 tr: &; ch$ng ta cung chC. 1hFng th4c n;V trD .` &et s nguV9nv U2c :nh .ong
&; gi2 tr: Gc 7u tr? trong hashtable.pd nhi9n 7; cK th3 nhi`u gi2 tr: nhSn chung &et khKa
t4c 7; cong &et .ong trong hashtablev i`u n;V gOi 7; sW Uung et. *K &et .;i c2ch 3 giDi
!uV#t sW Uung et n;V. Trong K c2ch chung nhht .; Gc h\ trG Lfi *+, 7; cho &\i .ong
5uV tr &et 5anh s2ch cK th4 tW c2c gi2 tr:. "hi ch$ng ta truV cSC &et gi2 tr: trong hashtablev
ch$ng ta cung chC &et khKa. Met 7mn n?a Hashtable gOi ChFng th4c GetHashCode() tr9n
Mng5Ch6M7c589Tp+%p
20A
NgnNgLpTrnhC#
khKa .; sE 56ng gi2 tr: trD .` 3 t& .ong tFng 4ng. N#u chb cK &et gi2 tr: th nK sH trD .`v
n#u cK nhi`u hFn hai gi2 tr: th .i/c t& ki#& nh: ChPn sH Gc thWc hi/n tr9n nh?ng nei 5ung
ca .ong K. 8fi . cK &et .;i gi2 tr: n9n .i/c t& ki#& n;V thWc hi/n th>ng thng 7; rht
nhanh.
"hKa trong Hashtable cK th3 7; ki3u 5? 7i/u nguV9n thV haV 7; c2c th3 hi/n ca c2c ki3u 5?
7i/u 5o ngi 5ong :nh nghda {c2c 7C cho ngi 7SC trnh tBo ra}. Nh?ng i tGng Gc sE
56ng 7;& khKa trong hashtable ChDi thWc thi GetHashCode() .; Equals(). Trong hmu h#t
trng hGCv ch$ng ta cK th3 sE 56ng k# thJa tJ Object.
Yiao 2i+n IDictionary
Hashtable 7; &et tJ i3n .I nK thWc thi giao 5i/n IDictionary. IDictionary cung chC &et thuec
tInh public 7; Item. Thuec tInh Item truV cSC &et gi2 tr: th>ng !ua &et khKa U2c :nh. Trong
ng>n ng? *@ thuec tInh Item Gc khai L2o nh sauu
object this[object key]
{ get; set;}
Thuec tInh Item Gc thWc thi trong ng>n ng? *@ .i to2n tE chb &6c {}. po .SV ch$ng ta
cK th3 truV cSC nh?ng it'& trong Lht c4 i tGng tJ i3n LYng c$ Ch2C ging nh truV cSC
&Dng.
I 56 T.1= &inh hOa .i/c th9& &et it'& .;o trong LDng Hashtable .; sau K truV cSC 7Bi
ch$ng th>ng !ua thuec tInh Item.
89 d: y(1w) th>Y+ t9nh lt'm t;<ng nh; nh; to,n tn oTTs't(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
namespace ProgrammingCSharp
{
using System;
using System.Collections;
public class Tester
{
static void Main()
{
// tao v khi tao hashtable
Hashtable hashTable = new Hashtable();
hashTable.Add("00440123,Ngoc Thao);
hashTable.Add("00123001,My Tien);
hashTable.Add("00330124,Thanh Tung);
// truy cp qua thuc tnh Item
Console.WriteLine("myHashtable[\"00440123\]: {0},
hashTable["00440123]);
Mng5Ch6M7c589Tp+%p
20T
NgnNgLpTrnhC#
}
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
hashab!eCH00**01)3ID: Ngoc hao
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
I 56 T.1= L_t mu LYng .i/c tBo &et LDng Hashtable &iv sE 56ng c2c gi2 tr: &ac :nh ca
5ung 7Gngv ChFng th4c tBo &z Lq& .; ChFng t4c so s2nh. Ti#C sau 7; .i/c th9& ) Le gi2
tr: .;o th'o th4 tW khKagi2 tr:. Sau khi c2c it'& z Gc th9& .;o ch$ng ta cK th3 7hV gi2 tr:
th>ng !ua khKa .i c2ch th4c 5ong to2n tE offs't.
TT- khGa *7 tT- gi/ tr6
*2c ki3u tJ cung chC th9& hai thuec tInh 7; thuec tInh Keysv .; thuec tInh Values. Trong
K Keys truV cSC i tGng ICollection .i tht cD nh?ng khKa trong Hashtablev .; Values truV
cSC i tGng ICollection .i tht cD gi2 tr:. I 56 T.1A &inh hOa nh sau.
89 d: y(1x 0p 1h6a N- tp gi, trM(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
namespace ProgrmmingCSharp
{
using System;
using System.Collections;
public class Tester
{
static void Main()
{
// tao v khi tao hashtable
Hashtable hashTable = new Hashtable();
hashTable.Add("00440123,Ngoc Thao);
hashTable.Add("00123001,My Tien);
hashTable.Add("00330124,Thanh Tung);
// nhn tp kha
ICollection keys = hashTable.Keys;
// nhp tp gi tri
ICollection values = hashTable.Values;
// xut tp kha
foreach( string s in keys)
{
Mng5Ch6M7c589Tp+%p
2=0
NgnNgLpTrnhC#
Console.WriteLine("{0}, s);
}
// xut tp gi tri
foreach( string s in values)
{
Console.WriteLine("{0}, s);
}
}
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
001)3001
00**01)3
003301)*
M' ien
Ngoc hao
hanh ung
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Mac 5o th4 tW ca keys kh>ng Gc D& LDo th'o th4 tW nhng ch$ng D& LDo rYng cong .i
th4 tW a ra ca gi2 tr:. Nh ch$ng ta thhV tr9n khKa 0012)001 tFng 4ng .i My Tienv...
Yiao 2i+n IDictionaryEnumerator
Nh?ng i tGng IDictionary cng h\ trG .ng 7aC foreach LYng .i/c thWc thi ChFng
th4c GetEnumerator()v ChFng th4c n;V trD .` &et IDictionaryEnumerator.
IDictionaryEnumerator Gc sE 56ng 3 7i/t k9 Lht c4 i tGng IDictionary n;o. NK cung
chC thuec tInh 3 truV cSC cD khKa .; gi2 tr: cho &\i th;nh Chmn trong tJ i3n. Ta cK .I 56
T.1T &inh hOa nh sauu
89 d: y(1v) sn d:ng giao diIn IDitionaryEnumerator.
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
namespace ProgrmmingCSharp
{
using System;
using System.Collections;
public class Tester
{
static void Main()
{
Mng5Ch6M7c589Tp+%p
2=1
NgnNgLpTrnhC#
// tao v khi tao hashtable
Hashtable hashTable = new Hashtable();
hashTable.Add("00440123,Ngoc Thao);
hashTable.Add("00123001,My Tien);
hashTable.Add("00330124,Thanh Tung);
Console.WriteLine("hashTable);
Console.WriteLine("Count: {0},hashTable.Count);
Console.WriteLine("Keys and Values:);
Print( hashTable );
}
public static void Print(Hashtable table)
{
IDictionaryEnumerator enumerator = table.GetEnumerator();
while ( enumerator.MoveNext() )
{
Console.WriteLine("\t{0}:\t{1},
enumerator.Key, enumerator.Value);
}
Console.WriteLine();
}
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
hashab!eg
Count: 3
Ge's and 2a!ues:
001)3001: M' ien
00**01)3: Ngoc hao
003301)*: hanh ung
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
%Pu hSi *7 tr= ,i
CU> hVi 1u ^i`u ChPn Li/t gi?a &Dng .; c2c th;nh Chmn L9n trong &et &Dng
0r* #Wi 1) M*ng #- 1ii> d #iI> tham +hi@>f +En +,+ th-nh ph.n %n trong m*ng =;H+ +Xp
ph,t dOa th'o 1ii> d #iI> +7a +h3ng( Do Ny mYt m*ng +7a 1ii> d #iI> tham +hi@> s`
1hng +hPa gi, trM g +* m- +hZ tham +hi@> =@n nhng th-nh ph.n =;H+ tLo ra tr%n h'ap(
CU> hVi 2u Met 7C cK Le chb &6c kh2c &et &Dng nh th# n;o
Mng5Ch6M7c589Tp+%p
2=2
NgnNgLpTrnhC#
0r* #Wi 2) &o-n to-n 1h,+ nha>f mYt m*ng +hZ =<n th>.n #- mYt =ci t;Hng tham +hi@> =@n
nhng =ci t;Hng 1h,+ +Cng 1ii> d #iI>( 0rong 1hi mYt #op +6 Y +hZ m:+ th n6 +hPa mYt
m*ng +,+ gi, trM n-o =6f N- +ho phqp %n ngo-i tr>y +p m*ng n-y thng A>a Y +hZ m:+(
MYt #op nh; Ny 1hng +hZ +6 mYt m*ng =<n th>.n m- +En +6 nhng th>Y+ t9nh 1h,+f +,+
ph;<ng thP+(((N6i +h>ng #- n@> ta +hZ +.n thao t,+ =<n th>.n tr%n t5ng ph.n ri%n # +7a mYt
m*ng th n%n dCng m*ng( CEn n@> +h3ng ta +.n thO+ hiIn mYt sc +hP+ njng n-o =6 +6 #i%n
A>an toi mYt m*ng th ta +6 thi _Uy dOng mYt #op +6 +hPa mYt m*ng N- ha trH Y +hZ m:+(
CU> hVi Fu Ziao 5i/n tSC hGC 7; g *K ChDi .NET cung chC &et s giao 5i/n chuMn haV
kh>ng
0r* #Wi F) 2iao diIn tp hHp +mng #- mYt giao diIn nh;ng n6 +hZ =;a ra +,+ A>y =Mnh thao
t,+ tr%n tp hHp nh;) so s,nhf #iIt 1% tr%n tp hHpf tLo +,+ tp hHp((( N/0 +>ng +Xp mYt sc
giao diIn +ho tp hHp nh;) lEnumera!"ef lCo##'+tionf I#om$arerf lList((((
%Pu hSi th5"
CU> hVi 1) 05 1ho, params =;H+ sn d:ng #-m gu
CU> hVi 2) nghea +7a #Inh #^p Tor'a+hu LInh n-y =;H+ sn d:ng Noi 1ii> d #iI> n-ou
CU> hVi F) C6 mXy 1ii> m*ng =a +hiD> trong ngn ng C#( &Jy +ho i@t t5ng #oLi N- 1hi n-o
th sn d:ng t5ng #oLi +ho th9+h hHp(
CU> hVi G) C,+h tLo ra m*ng =a +hiD> 1hng +Cng 19+h th;o+u
CU> hVi Q) &Jy +ho i@t sO 1h,+ nha> gia hai +,+h gBi "rriR N- "rrif Ru
CU> hVi v) C6 thi dCng #Inh Tor'a+h =i _>Xt ra tXt +* +,+ th-nh ph.n +7a m*ng =a +hiD>
1hng +Cng 19+h th;o+ hay 1hngu N@> =;H+ th ph*i #-m nh; th@ n-ou
CU> hVi w) ?ii> d #iI> n-o +6 thi #-m +hZ m:+ trong Y +hZ m:+ +7a mYt #opu
CU> hVi x) L-m th@ n-o =i i@t 19+h th;o+ +7a mYt m*ngu
CU> hVi y) LiIt 1% nhng giao diIn tp hHp m- (N/0 +>ng +Xpu Cho i@t t nghea +7a t5ng
giao diInu
CU> hVi 1$) C6 +,+h n-o tLo mYt m*ng m- 1hng +.n 1hai ,o tr;o+ 19+h th;o+ +7a m*ngu
8- trong A>, trnh thO+ hiIn tr%n m*ng +h3ng ta +6 thi tjng =Yng 19+h th;o+ +7a m*ng hay
1hngu
CU> hVi 11) N@> m*ng +6 F1 ph.n tn th d>ng #;Hng +7a =ci t;Hng "rrayList #- ao nhi%>u
0r;Wng hHp +6 FF ph.n tnu
CU> hVi 12) &-ng =Hi #- gu Ch3ng =;H+ srp _@p th'o 1ii> thP tO n-ou ng d:ng +7a h-ng
=Hi u
CU> hVi 1F) Ngjn _@p #- gu Ch3ng =;H+ srp _@p th'o 1ii> thP tO n-ou ng d:ng +7a ngjn
_@pu
CU> hVi 1G) Ph;<ng thP+ P''1\] trong h-ng =Hi N- ngjn _@p +6 t nghea gu
CU> hVi 1Q) ?ii> d #iI> n-o +ho phqp tr>y +p mYt gi, trM thng A>a 1h6a +7a n6u Lop n-o
trong (N/0 ha trH 1ii> d #iI> n-yu
Mng5Ch6M7c589Tp+%p
2=)
NgnNgLpTrnhC#
CU> hVi 1v) C,+h #Xy tp gi, trM trong mYt =ci t;Hng &ashta#'u
CU> hVi 1w) C,+h #Xy tp 1h6a trong mYt =ci t;Hng &asta#'u
CU> hVi 1x) ?h6a +6 ph*i #- d>y nhXt trong mYt &asta#' hay 1hngu
CU> hVi 1y) N@> hai NCng +6 +h>ng mYt 1h6a th +h3ng =;H+ tm 1i@m th'o 1ii> n-ou 8- tc+
=Y tm 1i@mu
CU> hVi 2$) &ashta#' thO+ thi +,+ giao diIn tp hHp n-ou
CU> hVi 21) Ph;<ng thP+ n-o thO+ hiIn NiI+ tLo +,+ 1ho, trong mYt &ashta#'u
47i tT-
4-i tp 1) 8i@t mYt +h;<ng trnh tLo mYt m*ng mYt +hiD> ng>y%n +hPa gi, trM ng~> nhi%n(
Srp _@p +,+ th-nh ph.n trong m*ng th'o thP tO tjng d.n N- hiin thM 1@t A>*( L-m t;<ng tO
Noi tr;Wng hHp srp _@p m*ng th'o thP tO gi*m d.n(
4-i tp 2) 8i@t mYt +h;<ng trnh tLo mYt m*ng mYt +hiD> ng>y%n +hPa gi, trM ng~> nhi%n(
Srp _@p +h3ng th'o thP tO sc Um th tjng +En sc d;<ng th gi*m d.n( &iin thM 1@t A>* ra m-n
hnh(
4-i tp F) 8i@t mYt +h;<ng trnh tm sc #on nhXt N- nhV nhXt trong m*ng hai +hiD> +6 19+h
th;o+ +c =Mnh( C,+ th-nh ph.n +7a m*ng =;H+ ph,t sinh ng~> nhi%n(
4-i tp G) 8i@t +h;<ng trnh +Yng hai ma trn n_mf tP+ #- m*ng hai +hiD> +6 19+h th;o+ n
dEngf m +Yt( C,+ gi, trM +7a hai m*ng ph,t sinh ng~> nhi%nf +ho i@t 1@t A>* +Yng hai ma
trnu
4-i tp G) 8i@t +h;<ng trnh +ho phqp ng;Wi dCng nhp N-o mYt ma trn n_mf sao =6 tm
1i@m mYt gi, trM n-o =6 th'o y%> +.> ng;Wi dCngf 1@t A>* +7a NiI+ tm 1i@m #- gi, trM N- thP
tO +7a gi, trM tm =;H+ trong ma trn(
4-i tp Q) 8i@t +h;<ng trnh tLo mYt m*ng hai +hiD> 1hng +Cng 19+h th;o+( Cc =Mnh sc dEng
+7a m*ng #- Qf +En t5ng dEng +6 19+h th;o+ bng gi, trM +7a dEngf tP #- dEng thP nhXt +6
19+h th;o+ 1 \tP+ #- +6 1 +Yt]f dEng thP hai +6 19+h th;o+ #- 2 \tP+ #- 2 +Yt](((( C,+ gi, trM
ph,t sinh ng~> nhi%n( &Jy _>Xt 1@t A>* +7a ma trn th'o 1ii> sa>)
aiR gi, trM aiR
(((
8iI+ _>Xt 1@t A>* +7a ma trn tr%n +6 thi thO+ hiIn bng NEng #^p Tor'a+h =;H+ 1hngu N@>
=;H+ th hJy Ni@t =oLn +h;<ng trnh _>Xt ra 1@t A>*u
4-i tp v) 8i@t +h;<ng trnh tLo ra mYt m*ng #;> tr F$ =iim sc +7a hB+ sinh( 09nh tr>ng
nh =iim +7a tXt +* hB+ sinh( >Xt 1@t A>* t5ng =iim N- =iim tr>ng nh(
4-i tp w) 8i@t mYt +h;<ng trnh tLo ra mYt #op t%n #- Lop&o+f trong =6 +6 1hai ,o Y +hZ
m:+ +hZ =@n t%n +7a t5ng hB+ Ni%n trong #op( Cho phqp mYt #op +6 tci =a F$ hB+ Ni%n( 0Lo
+h;<ng trnh minh hBa +ho phqp ng;Wi dCng nhp N-o t%n +7a t5ng hB+ Ni%n( >Xt 1@t A>*
danh s,nh hB+ Ni%n +7a #op thng A>a Y +hZ m:+(
Mng5Ch6M7c589Tp+%p
2=N
NgnNgLpTrnhC#
4-i tp x) 8i@t +h;<ng trnh sn d:ng "rrayList =i tLo mYt m*ng( Ch;<ng trnh tLo ra mYt
NEng #^p +ho phqp ng;Wi dCng nhp N-o +,+ gi, trM +ho m*ng( &Jy _>Xt 1@t A>* m*ng +Cng
Noi gi, trM Co>ntf N- Capa+ity +7a m*ng( 0a +6 thi thi@t #p gi, trM Capa+ity nhV h<n gi, trM
Co>nt =;H+ 1hngu
4-i tp y) 8i@t +h;<ng trnh tLo ra =ci t;Hng >'>' t%n #- my>'>'( ?hgi tLo my>'>' +6 Q
gi, trM ng~> nhi%n( &Jy thO+ hiIn +,+ ;o+ sa>f mai ;o+ thO+ hiIn ph*i _>Xt tnh trLng +7a
my>'>')
1( LXy mYt gi, trM ra(
2( LXy ti@p mYt gi, trM na(
F( 'm mYt gi, trM g =.> A>'>'(
G( d;a N-o A>'>' mYt gi, trM(
4-i tp 1$) 8i@t +h;<ng trnh tLo =ci t;Hng Sta+1 t%n #- mySta+1( ?hgi tLo mySta+1 +6 Q gi,
trM ng~> nhi%n( &Jy thO+ hiIn +,+ ;o+ sa>f mai ;o+ thO+ hiIn ph*i _>Xt tnh trLng +7a
mySta+1)
1( LXy mYt gi, trM ra(
2( LXy ti@p mYt gi, trM na(
F( 'm mYt gi, trM g =.> sta+1(
G( d;a N-o sta+1 mYt gi, trM(
4-i tp 11) 8i@t +h;<ng trnh sn d:ng 1ii> d #iI> t5 =iin =i A>*n #t thng tin +7a mYt #op
hB+( 0rong =6 1h6a #- +h>ai mJ sc hB+ Ni%n +En gi, trM #- t%n +7a hB+ Ni%n( 8i@t +h;<ng trnh
minh hBa +ho phqp nhp N-o 1$ hB+ Ni%nf N- +ho phqp ng;Wi dCng tm 1i@m t%n +7a hB+ Ni%n
thng A>a mJ sc hB+ Ni%n(
Mng5Ch6M7c589Tp+%p
2=-
NgnNgLpTrnhC#
C4/Nng 1K
$ Lt CHT
L*+ X.i t/0ng string
T:o G~t c4@Mi
T:o c4@Mi 'ng +4/Nng t4`c ToVtring
T46o t<c trbn c4@Mi
T8G G~t c4@Mi con
C4i6 c4@Mi
T46o t<c trbn c4@Mi 'ng $tringBuilder
C<c gi_@ t4`c P@& tqc
V= 'ng gi_@ t4`c P@& tqc P@6 )*+ R[g[n
V= 'ng R[g[n X_ t8G tJ+ 40+
V= 'ng R[g[n X_ goG n4fG
V= 'ng )*+ C6+t@r[Co))[ction
C%@ 4ji k gIi tJ+
*K &et thi gian ngi ta 7u>n nghd rYng &2V tInh chb 5;nh ri9ng cho .i/c thao t2c c2c
gi2 tr: 5Bng s. *2c &2V tInh mu ti9n 7; Gc thi#t k# 3 sE 56ng tInh to2n s 7Gng 7n nh
tInh to2n !u Bo ca t9n 7Ea trong !uc Chng. ; ng>n ng? 7SC trnh Gc giDng 5BV f khoa
to2n ca c2c Bi hOc 7n.
Ng;V naVv hmu h#t c2c chFng trnh 7i9n !uan #n nhi`u chu\i k] tW hFn 7; c2c chu\i c2c
con s. Th>ng thng c2c chu\i Gc sE 56ng cho .i/c UE 7] tJ ng?v thao t2c tr9n c2c su
7i/uv .; tBo ra c2c trang ('L.
Ng>n ng? *@ h\ trG kh2 mV c2c ch4c nqng ca ki3u chu\i &; ch$ng ta cK th3 thhV
Gc f c2c ng>n ng? 7SC trnh chC cao kh2c. ^i`u !uan trOng hFn 7; ng>n ng? *@ U'& nh?ng
chu\i nh 7; nh?ng i tGng .; Gc Kng gKi tht cD c2c thao t2cv s_C U#Cv .; c2c ChFng
th4c t& ki#& thng Gc 2C 56ng cho chu\i k] tW.
Nh?ng thao t2c chu\i Ch4c tBC .; so khC &cu Gc h\ trG Lfi .i/c sE 56ng c2c Li3u th4c
!uV t_c {r'gu7ar 'UCr'ssion}. Ng>n ng? *@ k#t hGC s4c &Bnh .; sW Ch4c tBC ca c$ Ch2C Li3u
X/L:Ch1;i
2=0
NgnNgLpTrnhC#
th4c !uV t_cv {th>ng thng chb Gc t& thhV trong c2c ng>n ng? thao t2c chu\i nh y(kv
1'r7}v .i &et thi#t k# hng i tGng mV .
Trong chFng 10 n;V ch$ng ta sH hOc c2ch 7;& .i/c .i ki3u 5? 7i/u string ca ng>n ng? *@v
ki3u string n;V chInh 7; &et a7ias ca 7C System.String ca .NET %ra&'(ork. *h$ng ta
cng sH thhV Gc c2ch r$t trIch ra chu\i conv thao t2c .; ni c2c chu\iv UPV 5Wng &et chu\i
&i .i 7C StringBuilder. Th9& .;o Kv ch$ng ta sH Gc hOc c2ch sE 56ng 7C Regex 3 so
khC c2c chu\i 5Wa tr9n Li3u th4c !uV t_c Ch4c tBC.
&- i t@ng String
*@ U'& nh?ng chu\i nh 7; nh?ng ki3u 5? 7i/u cF LDn t4c 7; c2c 7C n;V rht 7inh hoBtv
&Bnh &Hv .; nhht 7; 5 sE 56ng. M\i i tGng chu\i 7; &et 5zV c :nh c2c k] tW lnico5'.
NKi c2ch kh2cv c2c ChFng th4c Gc 5ong 3 7;& thaV i &et chu\i thWc sW trD .` &et LDn
sao z thaV iv chu\i nguV9n thV kh>ng thaV i. "hi ch$ng ta khai L2o &et chu\i *@ LYng
c2ch 5ong tJ khKa stringv 7; ch$ng ta z khai L2o &et i tGng ca 7C System.Stringv PV
7; &et trong nh?ng ki3u 5? 7i/u Gc UPV 5Wng sXn Gc cung chC Lfi th .i/n 7C .NET
{.NET %ra&'(ork *7ass +iLrarV}. po K &et ki3u 5? 7i/u chu\i *@ 7; ki3u 5? 7i/u
System.Stringv .; trong sut chFng n;V 5ong hai t9n ho2n i 7cn nhau.
"hai L2o ca 7C System.String nh sauu
public sealed class String : IComparable, ICloneble, IConvertible
"hai L2o n;V cho thhV 7C String z Gc Kng 5hu 7; kh>ng cho ChgC k# thJav 5o K ch$ng
ta kh>ng th3 5cn Uuht tJ 7C n;V Gc. +C n;V cng thWc thi La giao 5i/n h/ thng 7;
IComparablev ICloneablev .; IConvertible giao 5i/n n;V cho ChgC 7C System.String
chuV3n i .i nh?ng 7C kh2c trong h/ thng .NET.
Nh ch$ng ta z U'& trong chFng Tv giao 5i/n IComparable Gc thWc thi Lfi c2c ki3u 5?
7i/u z Gc s_C U#C. I 56 nh chu\i th th'o c2ch s_C U#C y7ChaL'. 8ht c4 chu\i n;o a ra
cng cK th3 Gc so s2nh .i chu\i kh2c 3 chb ra rYng chu\i n;o cK th4 tW trc. Nh?ng 7C
IComparable thWc thi ChFng th4c CompareTo().
Nh?ng i tGng ICloneable cK th3 tBo ra nh?ng th3 hi/n kh2c .i cong gi2 tr: nh 7; th3 hi/n
nguV9n thu. po K ta cK th3 tBo ra &et chu\i &i tJ chu\i Lan mu .; gi2 tr: ca chu\i &i
LYng .i chu\i Lan mu. Nh?ng 7C ICloneable thWc thi ChFng th4c Clone().
Nh?ng 7C IConvertible cung chC ChFng th4c 3 5 5;ng chuV3n i !ua c2c ki3u 5? 7i/u cF
LDn kh2c nh 7; ToInt32()v ToDouble{}v ToDecimal{}v...
T<o "Ht chu[i
*2ch Ch Li#n nhht 3 tBo ra &et chu\i 7; g2n cho &et chu\i trIch 5cn t4c 7; chu\i nY&
trong 5hu ngoac kgCv ki3u chu\i n;V cng Gc Li#t nh 7; &et chu\i hYngv khai L2o nh sauu
string newString = "Day la chuoi hang;
Nh?ng chu\i trIch 5cn cK th3 Gc th9& c2c k] tW 'scaC'v nh 7; snt haV sttv k] tW n;V L_t
mu .i 5mu chgo ngGc {st}v c2c k] tW n;V Gc 5ong 3 chb ra rYng tBi .: trI K Uung 5ng
X/L:Ch1;i
2==
NgnNgLpTrnhC#
haV taL Gc Uuht hi/n. 8fi . 5hu gBch chgo ngGc n;V cng Gc 5ong trong .;i c$ Ch2C
5ng 7/nhv nh 7; :a chb l,+s haV ng 5cn th &6cv 5o K trong chu\i trIch 5cn 5hu chgo
ngGc n;V ChDi Gc at trc 5hu chgo ngGc kh2cv t4c 7; 5ong hai 5hu chgo ngGc trong
trng hGC n;V.
*hu\i cng cK th3 Gc tBo LYng c2ch sE 56ng chu\i c :nh haV nguV9n .qn {.'rLati&}v t4c
7; c2c k] tW trong chu\i Gc gi? nguV9n kh>ng thaV i. *hu\i n;V Gc L_t mu .i Li3u
tGng . 8i3u tGng n;V LDo .i h;& khfi 5Wng ca 7C String rYng chu\i th'o sau 7;
nguV9n .qnv thS& chI nK ch4a nhi`u 5ng hoac Lao g& nh?ng k] tW 'scaC'. Trong chu\i
nguV9n .qnv k] tW chgo ngGc .; nh?ng k] tW sau nK Fn giDn 7; nh?ng k] tW Gc th9& .;o
chu\i. po .SVv ta cK 2 :nh nghda chu\i sau 7; tFng Fng .i nhauu
string literal1 = "\\\\MyDocs\\CSharp\\ProgrammingC#.cs;
string verbatim1 = \\MyDocs\CSharp\ProgrammingC#.cs;
Trong chu\i th4 nhhtv 7; &et chu\i Lnh thng Gc sE 56ngv 5o K 5hu k] tW chgo 7; k] tW
'scaC'v n9n nK ChDi Gc at trc &et k] tW chgo ngGc th4 hai. Trong khai L2o th4 hai
chu\i nguV9n .qn Gc sE 56ngv n9n kh>ng cmn ChDi th9& k] tW chgo ngGc. Met .I 56 th4
hai &inh hOa .i/c 5ong chu\i nguV9n .qnu
string literal2 = "Dong mot \n dong hai;
string verbatim2 = Dong mot
dong hai;
NKi chung ta ta cK th3 sE 56ng !ua 7Bi gi?a hai c2ch :nh nghda tr9n. i/c 7Wa chOn Ch6 thuec
.;o sW thuSn ti/n trong tJng trng hGC haV Chong c2ch ri9ng ca &\i ngi.
T<o chu[i 2ong -h?ng th1c ToString cda i t@ng
Met c2ch rht Ch Li#n kh2c 3 tBo &et chu\i 7; gOi ChFng th4c ToString() ca &et i
tGng .; g2n k#t !uD #n &et Li#n chu\i. Tht cD c2c ki3u 5? 7i/u cF LDn Ch !uV#t ChFng
th4c n;V rht Fn giDn 7; chuV3n i gi2 tr: {th>ng thng 7; gi2 tr: s} #n &et chu\i th3 hi/n
ca gi2 tr:. Trong .I 56 th'o sauv ChFng th4c ToString() ca ki3u 5? 7i/u int Gc gOi 3 7u
tr? gi2 tr: ca nK trong &et chu\iu
int myInt = "9;
string intString = myInt.ToString();
1hFng th4c myInt.ToString() trD .` &et i tGng String .; i tGng n;V Gc g2n cho
intString.
+C String ca .NET cung chC rht nhi`u Le khfi 5Wng h\ trG rht nhi`u k thuSt kh2c nhau 3
g2n nh?ng gi2 tr: chu\i #n ki3u 5? 7i/u chu\i. Met .;i Le khfi 5Wng cK th3 cho ChgC ch$ng
ta tBo &et chu\i LYng c2ch truV`n .;o &et &Dng k] tW hoac &et con trQ k] tW. TruV`n &et
&Dng chu\i nh 7; tha& s #n Le khfi 5Wng ca String 7; tBo ra &et th3 hi/n *+,i
co&C7iant {&et th3 hi/n $ng th'o V9u cmu ca *+,}. *n .i/c truV`n &et con trQ chu\i nh
&et tha& s ca Le khfi 5Wng String 7; .i/c tBo &et th3 hi/n kh>ng an to;n {unsaf'}.
X/L:Ch1;i
2=A
NgnNgLpTrnhC#
Thao t/c tr5n chu[i
+C string cung chC rht nhi`u s 7Gng c2c ChFng th4c 3 so s2nhv t& ki#& .; thao t2c
tr9n chu\iv c2c ChFng th4c n;V Gc trnh L;V trong LDng 10.1u
V&st[G.Vtring
P4/Nng t4`c Tr/Yng t ng4u6
Empty Trng public static th3 hi/n &et chu\i r\ng.
Compare() 1hFng th4c public static 3 so s2nh hai chu\i.
CompareOrdinal() 1hFng th4c public static 3 so s2nh hai chu\i kh>ng
!uan tP& #n th4 tW.
Concat() 1hFng th4c public static 3 tBo chu\i &i tJ &et haV
nhi`u chu\i.
Copy() 1hFng th4c public static tBo ra &et chu\i &i LYng
sao tJ chu\i kh2c.
Equal() 1hFng th4c public static ki3& tra U'& hai chu\i cK
cong gi2 tr: haV kh>ng.
Format() 1hFng th4c public static :nh 5Bng &et chu\i 5ong
k] tW 7/nh :nh 5Bng U2c :nh.
Intern() 1hFng th4c public static trD .` tha& chi#u #n th3
hi/n ca chu\i.
IsInterned() 1hFng th4c public static trD .` tha& chi#u ca chu\i
oin() 1hFng th4c public static k#t ni c2c chu\i U2c :nh
gi?a &\i th;nh Chmn ca &Dng chu\i.
Chars() <n5'U'r ca chu\i.
Length() *hi`u 5;i ca chu\i.
Clone() TrD .` chu\i.
CompareTo() So s2nh hai chu\i.
CopyTo() Sao chgC &et s c2c k] tW U2c :nh #n &et &Dng k]
tW lnico5'.
EndsWidth() *hb ra .: trI ca chu\i U2c :nh Cho hGC .i chu\i a
ra.
Insert() TrD .` chu\i &i z Gc chn &et chu\i U2c :nh.
LastIndexOf() *hb ra .: trI Uuht hi/n cui cong ca &et chu\i U2c
:nh trong chu\i.
PadLeft() *anh 7` ChDi nh?ng k] tW trong chu\iv chn .;o L9n
tr2i khoDng tr_ng haV c2c k] tW U2c :nh.
PadRight() *anh 7` tr2i nh?ng k] tW trong chu\iv chn .;o L9n
ChDi khoDng tr_ng haV c2c k] tW U2c :nh.
X/L:Ch1;i
2=T
NgnNgLpTrnhC#
Remove() Ka i &et s k] tW U2c :nh.
Split() TrD .` chu\i Gc ChPn :nh Lfi nh?ng k] tW U2c :nh
trong chu\i.
StartWidth() '& chu\i cK L_t mu LYng &et s k] tW U2c :nh haV
kh>ng.
SubString() +hV &et chu\i con.
ToCharArray() Sao chgC nh?ng k] tW tJ &et chu\i #n &Dng k] tW.
ToLower() TrD .` LDn sao ca chu\i f ki3u ch? thng.
ToUpper() TrD .` LDn sao ca chu\i f ki3u ch? hoa.
Trim() Ka LQ tht cD sW Uuht hi/n ca tSC hGC k] tW U2c :nh
tJ .: trI mu ti9n #n .: trI cui cong trong chu\i.
TrimEnd() Ka nh nhng f .: trI cui.
TrimStart() Ka nh Trim nhng f .: trI mu.
4*ng 1$(1 ) Ph;<ng thP+ N- th>Y+ t9nh +7a #op String
Trong .I 56 10.1 sau PV ch$ng ta &inh hOa .i/c sE 56ng &et s c2c ChFng th4c ca chu\i
nh Compare()v Concat() {.; 5ong to2n tE }v Copy() {.; 5ong to2n tE }v Insert()v
EndsWith()v .; chb &6c IndexOf.
89 d: 1$(1 ) L-m NiI+ Noi +h>ai(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
namespace ProgrammingCSharp
{
using System;
public class StringTester
{
static void Main()
{
// khi tao mt s chui d thao tc
string s1 = "abcd;
string s2 = "ABCD;
string s3 = "Trung Tam Dao Tao CNTT
Thanh pho Ho Chi Minh Viet Nam;
int result;
// So snh hai chui vi nhau c phn bit ch thng v ch hoa
result = string.Compare( s1 ,s2);
Console.WriteLine("So sanh hai chuoi S1: {0} v S2: {1} ket qua: {2} \n,
s1 ,s2 ,result);
// S dng tip phong thc Compare() nhng trng hop ny khng bit
// ch thng hay ch hoa
X/L:Ch1;i
2A0
NgnNgLpTrnhC#
// Tham s th ba l true s b qua kim tra k tu thng hoa
result = string. Compare(s1, s2, true);
Console.WriteLine("Khong phan biet chu thuong va hoa\n);
Console.WriteLine("S1: {0} , S2: {1}, ket qua : {2}\n, s1, s2, result);
// phong thc ni cc chui
string s4 = string.Concat(s1, s2);
Console.WriteLine("Chuoi S4 noi tu chuoi S1 va S2: {0}, s4);
// s dng nap chng ton t +
string s5 = s1 + s2;
Console.WriteLine("Chuoi S5 duoc noi tu chuoi S1 va S2: {0}, s5);
// S dng phong thc copy chui
string s6 = string.Copy(s5);
Console.WriteLine("S6 duoc sao chep tu S5: {0}, s6);
// S dng nap chng ton t =
string s = s6;
Console.WriteLine("S = S6: {0}, s);
// S dng ba cch so snh hai chui
// Cch 1 s dng mt chui d so snh vi chui cn lai
Console.WriteLine("S6.Equals(S) ?: {0}, s6.Equals(s));
// Cch 2 dng hm ca lp string so snh hai chui
Console.WriteLine("Equals(S6, s) ?: {0}, string.Equals(s6, s));
// Cch 3 dng ton t so snh
Console.WriteLine("S6 == S ?: {0}, s6 == s);
// S dng hai thuc tnh hay dng l ch mc v chiu di ca chui
Console.WriteLine("\nChuoi S co chieu dai la : {0}, s.Length);
Console.WriteLine("Ky tu thu 3 cua chuoi S la : {0}, s[2] );
// Kim tra xem mt chui c kt thc vi mt nhm k
// tu xc dinh hay khng
Console.WriteLine("S3: {0}\n ket thuc voi chu CNTT ? : {1}\n,
s3, s3.EndsWith("CNTT));
Console.WriteLine("S3: {0}\n ket thuc voi chu Nam ? : {1}\n,
s3, s3.EndsWith("Nam));
// Tr v ch mc ca mt chui con
Console.WriteLine("\nTim vi tri xuat hien dau tien cua chu CNTT );
Console.WriteLine("trong chuoi S3 l {0}\n, s3.IndexOf("CNTT));
// Chn t nhn luc vo trc CNTT trong chui S3
string s8 = s3.Insert(18, "nhan luc );
Console.WriteLine(" S8 : {0}\n, s8);
X/L:Ch1;i
2A1
NgnNgLpTrnhC#
// Ngoi ra ta c th kt hop nh sau
string s9 = s3.Insert( s3.IndexOf( "CNTT ) , "nhan luc );
Console.WriteLine(" S9 : {0}\n, s9);
} // end Main
} // end class
} // end namespace
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
So sanh hai chuoi S1: abcd $M S): B3CD ket Lua: -1
Ghong &han biet chu thuong $a hoa
S1: abcd % S): B3CD% ket Lua : 0
Chuoi S* noi tu chuoi S1 $a S): abcdB3CD
Chuoi S5 duoc noi tu chuoi S1 N S): abcdB3CD
S+ duoc sao che& tu S5: abcdB3CD
S6 = S+: abcdB3CD
S+.:Lua!s.S6/ O: rue
:Lua!s.S+% s6/ O: rue
S+ == S6 O: rue
Chuoi S6 co chieu dai !a : 7
G' tu thu 3 cua chuoi S6 !a : c
S3: rung a# Dao ao CN
hanh &ho ,o Chi Minh 2iet Na#
ket thuc $oi chu CN O : -a!se
S3: rung a# Dao ao CN
hanh &ho ,o Chi Minh 2iet Na#
ket thuc $oi chu Minh O : rue
i# $i tri (uat hien dau tien cua chu CN
trong chuoi S3 !M 17
S7 : rung a# Dao ao nhan !uc CN
hanh &ho ,o Chi Minh 2iet Na#
S9 : rung a# Dao ao nhan !uc CN
hanh &ho ,o Chi Minh 2iet Na#
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Nh ch$ng ta z U'& oBn chFng trnh &inh hOa tr9nv chFng trnh L_t mu .i La khai L2o
chu\iu
string s1 = "abcd;
string s2 = "ABCD;
X/L:Ch1;i
2A2
NgnNgLpTrnhC#
string s3 = "Trung Tam Dao Tao CNTT
Thanh pho Ho Chi Minh Viet Nam;
[ai chu\i mu s1 .; s2 Gc khai L2o chu\i k] tW Lnh thngv cn chu\i th4 La Gc khai
L2o 7; chu\i nguV9n .qn {.'rLati& string} LYng c2ch sE 56ng k] hi/u trc chu\i. *hFng
trnh L_t mu LYng .i/c so s2nh hai chu\i s1 .; s2. 1hFng th4c Compare() 7; ChFng th4c
tdnh ca 7C stringv .; ChFng th4c n;V z Gc nBC chng.
1hi9n LDn mu ti9n ca ChFng th4c nBC chng n;V 7; 7hV hai chu\i .; so s2nh ch$ng .i
nhauu
// So snh hai chui vi nhau c phn bit ch thng v ch hoa
result = string.Compare( s1 ,s2);
Console.WriteLine("So sanh hai chuoi s1: {0} v s2: {1} ket qua: {2} \n,
s1 ,s2 ,result);
PV .i/c so s2nh cK ChPn Li/t ch? thng .; ch? hoav ChFng th4c trD .` c2c gi2 tr: kh2c
nhau Ch6 thuec .;o k#t !uD so s2nhu
Met s P& n#u chu\i mu ti9n nhQ hFn chu\i th4 hai
Zi2 tr: 0 n#u hai chu\i LYng nhau
Met s 5Fng n#u chu\i th4 nhht 7n hFn chu\i th4 hai.
Trong trng hGC so s2nh tr9n th a ra k#t !uD 7; chu\i s1 nhQ hFn chu\i s2. Trong
lnico5' cng nh yS*<< th th4 tW ca k] tW thng nhQ hFn th4 tW ca k] tW hoau
So sanh hai chuoi S1: abcd v S2: ABCD ket qua: -1
*2ch so s2nh th4 hai 5ong Chi9n LDn nBC chng Compare() 7hV La tha& s. Tha& s 8oolean
!uV#t :nh LQ !ua haV kh>ng LQ !ua .i/c so s2nh ChPn Li/t ch? thng .; ch? hoa. Tha& s
n;V cK th3 LQ !ua. N#u gi2 tr: ca tha& s 7; true th .i/c so s2nh sH LQ !ua sW ChPn Li/t ch?
thng .; ch? hoa. i/c so s2nh sau sH kh>ng !uan tP& #n ki3u 7oBi ch?u
// Tham s th ba l true s b qua kim tra k tu thng hoa
result = string. Compare(s1, s2, true);
Console.WriteLine("Khong phan biet chu thuong va hoa\n);
Console.WriteLine("S1: {0} , S2: {1}, ket qua : {2}\n, s1, s2, result);
+$c n;V th .i/c so s2nh ho;n to;n ging nhau .; k#t !uD trD .` 7; gi2 tr: 0u
Khong phan biet chu thuong va hoa
S1: abcd , S2: ABCD, ket qua : 0
I 56 &inh hOa 10.1 tr9n ti#C t6c .i .i/c ni c2c chu\i 7Bi .i nhau. PV sE 56ng hai c2ch
3 ni 7i`n hai chu\i. *h$ng ta cK th3 sE 56ng ChFng th4c Concat() PV 7; ChFng th4c
public static ca stringu
string s4 = string.Concat(s1, s2);
[aV c2ch kh2c Fn giDn hFn 7; .i/c sE 56ng to2n tE ni hai chu\i {}u
string s5 = s1 + s2;
Trong cD hai trng hGC th k#t !uD ni hai chu\i ho;n to;n th;nh c>ng .; nh sauu
X/L:Ch1;i
2A)
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
Chuoi S4 noi tu chuoi S1 va S2: abcdABCD
Chuoi S5 duoc noi tu chuoi S1 + S2: abcdABCD
TFng tW nh .SVv .i/c tBo &et chu\i &i cK th3 Gc thi#t 7SC LYng hai c2ch. ^mu ti9n 7;
ch$ng ta cK th3 sE 56ng ChFng th4c static Copy() nh sauu
string s6 = string.Copy(s5);
[oac thuSn ti/n hFn ch$ng ta cK th3 sE 56ng ChFng th4c nBC chng to2n tE {} th>ng !ua
.i/c sao chgC ngm& :nhu
string s = s6;
"#t !uD ca hai c2ch tBo tr9n `u ho;n to;n nh nhauu
S6 duoc sao chep tu S5: abcdABCD
S = S6: abcdABCD
+C String ca .NET cung chC La c2ch 3 ki3& tra LYng nhau gi?a hai chu\i. ^mu ti9n 7;
ch$ng ta cK th3 sE 56ng ChFng th4c nBC chng Equals() 3 ki3& tra trWc ti#C rYng S6 cK
LYng S haV kh>ngu
Console.WriteLine("S6.Equals(S) ?: {0}, S6.Equals(S));
" thuSt so s2nh th4 hai 7; truV`n cD hai chu\i .;o ChFng th4c Equals() ca stringu
Console.WriteLine("Equals(S6, s) ?: {0}, string.Equals(S6, S));
; ChFng Ch2C cui cong 7; sE 56ng nBC chng to2n tE so s2nh {} ca Stringu
Console.WriteLine("S6 == S ?: {0}, s6 == s);
Trong cD La trng hGC th k#t !uD trD .` 7; &et gi2 tr: Booleanv ta cK k#t !uD nh sauu
S6.Equals(S) ?: True
Equals(S6, s) ?: True
S6 == S ?: True
i/c so s2nh LYng nhau gi?a hai chu\i 7; .i/c rht tW nhi9n .; thng Gc sE 56ng. TuV
nhi9nv trong &et s ng>n ng?v nh 8.NETv kh>ng h\ trG nBC chng to2n tE. po K 3 ch_c
ch_n ch$ng ta n9n sE 56ng ChFng th4c Equals() 7; tt nhht.
*2c oBn chFng trnh ti#C th'o ca .I 56 10.1 sE 56ng to2n tE chb &6c {} 3 t& ra k] tW
U2c :nh trong &et chu\i. ; 5ong thuec tInh Length 3 7hV .` chi`u 5;i ca to;n Le &et
chu\iu
Console.WriteLine("\nChuoi S co chieu dai la : {0}, s.Length);
Console.WriteLine("Ky tu thu 3 cua chuoi S la : {0}, s[2] );
"#t !uD 7;u
Chuoi S co chieu dai la : 8
Ky tu thu 3 cua chuoi S la : c
1hFng th4c EndsWith() hQi U'& &et chu\i cK ch4a &et chu\i con f .: trI cui cong haV
kh>ng. po .SVv ch$ng ta cK th3 hQi rYng chu\i S3 cK k#t th$c LYng chu\i s*NTTt haV chu\i
sNa&tu
// Kim tra xem mt chui c kt thc vi mt nhm k tu xc dinh hay khng
X/L:Ch1;i
2AN
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
Console.WriteLine("S3: {0}\n ket thuc voi chu CNTT ? : {1}\n,
s3, s3.EndsWith("CNTT));
Console.WriteLine("S3: {0}\n ket thuc voi chu Nam ? : {1}\n,
s3, s3.EndsWith("Nam));
"#t !uD trD .` 7; 7mn ki3& tra mu ti9n 7; sai 5o chu\i S3 kh>ng k#t th$c ch? s*NTTtv .; 7mn
ki3& tra th4 hai 7; $ngu
S3: Trung Tam Dao Tao CNTT
Thanh pho Ho Chi Minh Viet Nam
ket thuc voi chu CNTT ? : False
S3: Trung Tam Dao Tao CNTT
Thanh pho Ho Chi Minh Viet Nam
ket thuc voi chu Minh ? : True
1hFng th4c IndexOf{} chb ra .: trI ca &et con L9n trong &et chu\i {n#u cK}. ; ChFng
th4c Insert() chn &et chu\i con &i .;o &et LDn sao chgC ca chu\i Lan mu.
^oBn 7/nh ti#C th'o ca .I 56 &inh hOa thWc hi/n .i/c U2c :nh .: trI Uuht hi/n mu ti9n ca
chu\i s*NTTt trong chu\i S3u
Console.WriteLine("\nTim vi tri xuat hien dau tien cua chu CNTT );
Console.WriteLine("trong chuoi S3 l {0}\n, s3.IndexOf("CNTT));
; k#t !uD t& Gc 7; 1Au
Tim vi tri xuat hien dau tien cua chu CNTT
trong chuoi S3 l 18
*h$ng ta cK th3 chn .;o chu\i tJ snhan 7uct .; th'o sau chu\i n;V 7; &et khoDng tr_ng .;o
trong chu\i Lan mu. "hi thWc hi/n th ChFng th4c trD .` LDn sao ca chu\i z Gc chn
.;o chu\i con &i .; Gc g2n 7Bi .;o chu\i S8u
string s8 = s3.Insert(18, "nhan luc );
Console.WriteLine(" S8 : {0}\n, s8);
"#t !uD a ra 7;u
S8 : Trung Tam Dao Tao nhan luc CNTT
Thanh pho Ho Chi Minh Viet Nam
*ui congv ch$ng ta cK th3 k#t hGC &et s c2c ChgC to2n 3 thWc hi/n .i/c chn nh sauu
string s9 = s3.Insert( s3.IndexOf( "CNTT ) , "nhan luc );
Console.WriteLine(" S9 : {0}\n, s9);
"#t !uD cui cong cng tFng tW nh c2ch chn L9n tr9nu
S9 : Trung Tam Dao Tao nhan luc CNTT
Thanh pho Ho Chi Minh Viet Nam
T" "Ht chu[i con
X/L:Ch1;i
2A-
NgnNgLpTrnhC#
Trong ki3u 5? 7i/u String cK cung chC ChFng th4c Substring() 3 trIch &et chu\i con tJ
chu\i Lan mu. *D hai Chi9n LDn `u 5ong &et chb &6c 3 U2c :nh .: trI L_t mu trIch ra. ;
&et trong hai Chi9n LDn 5ong chb &6c th4 hai 7;& .: trI k#t th$c ca chu\i. Trong .I 56 10.2
&inh hOa .i/c sE 56ng ChFng th4c Substring() ca chu\i.
89 d: 1$(2 ) Sn d:ng ph;<ng thP+ S>string\](
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
namespace ProgrammingCSharp
{
using System;
using System.Text;
public class StringTester
{
static void Main()
{
// Khai bo cc chui d s dng
string s1 = "Mot hai ba bon;
int ix;
// ly ch s ca khong trng cui cng
ix = s1.LastIndexOf(" );
// ly t cui cng
string s2 = s1.Substring( ix+1);
// thit lp lai chui s1 t vi tr 0 dn vi tr ix
// do d s1 c gi tri mi l mot hai ba
s1 = s1.Substring(0, ix);
// tm ch s ca khong trng cui cng (sau hai)
ix = s1.LastIndexOf(" );
// thit lp s3 l chui con bt du t vi tr ix
// do d s3 = "ba
string s3 = s1.Substring(ix+1);
// thit lp lai s1 bt du t vi tr 0 dn cui vi tr ix
// s1 = "mot hai
s1 = s1.Substring(0, ix);
// ix ch dn khong trng gia "mot va "hai
ix = s1.LastIndexOf(" );
// tao ra s4 l chui con bt du t sau vi tr ix, do
// vy c gi tri l "hai
string s4 = s1.Substring( ix+1);
// thit lp lai gi tri ca s1
X/L:Ch1;i
2A0
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
s1 = s1.Substring(0, ix);
// ly ch s ca khong trng cui cng, lc ny ix l 1
ix = s1.LastIndexOf(" );
// tao ra chui s5 bt du t ch s khong trng, nhng khng c khong
// trng v ix l 1 nn chui bt du t 0
string s5 = s1.Substring(ix +1);
Console.WriteLine("s2 : {0}\n s3 : {1}, s2, s3);
Console.WriteLine("s4 : {0}\n s5 : {1}\n, s4, s5);
Console.WriteLine("s1: {0}\n, s1);
}// end Main
}// end class
}// end namespace
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
s) : bon
s3 : ba
s* : hai
s5 : #ot
s1 : #ot
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
I 56 &inh hOa 10.2 tr9n kh>ng ChDi 7; giDi Ch2C tt 3 giDi !uV#t .hn ` trIch 7hV c2c k] tW
trong &et chu\i. Nhng nK 7; c2ch gmn $ng tt nhht .; &inh hOa h?u 56ng cho k thuSt n;V.
%hia chu[i
Met giDi Ch2C giDi !uV#t hi/u !uD hFn 3 &inh hOa cho .I 56 10.2 7; cK th3 sE 56ng ChFng
th4c Split() ca 7C string. *h4c nqng chInh 7; ChPn tIch &et chu\i ra th;nh c2c chu\i con.
^3 sE 56ng Split()v ch$ng ta truV`n .;o &et &Dng c2c k] tW ChPn c2chv c2c k] tW n;V Gc
5ong 3 chia c2c tJ trong chu\i. ; ChFng th4c sH trD .` &et &Dng nh?ng chu\i con.
89 d: 1$(F ) Sn d:ng ph;<ng thP+ Sp#it\](
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
namespace ProgrammingCSharp
{
using System;
using System.Text;
public class StringTester
{
static void Main()
X/L:Ch1;i
2A=
NgnNgLpTrnhC#
{
// tao cc chui d lm vic
string s1 = "Mot, hai, ba Trung Tam Dao Tao CNTT;
// tao ra hng k tu khong trng v du phy
const char Space = ` `;
const char Comma = `,;
// tao ra mng phn cch
char[] delimiters = new char[]
{
Space,
Comma
};
string output = ";
int ctr = 1;
// thuc hin vic chia mt chui dng vng lp
// da kt qu vo mng cc chui
foreach ( string subString in s1.Split(delimiters) )
{
output += ctr++;
output += ": ;
output += subString;
output += "\n;
}// end foreach
Console.WriteLine( output );
}// end Main
}// end class
} // end namespace
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
1: Mot
):
3: hai
*:
5: ba
+: rung
6: a#
7: Dao
9: ao
X/L:Ch1;i
2AA
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
10: CN
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
^oBn chFng trnh L_t mu LYng .i/c tBo &et chu\i 3 &inh hOa .i/c ChPn tIchu
string s1 = "Mot, hai, ba Trung Tam Dao Tao CNTT;
[ai k] tW khoDng tr_ng .; 5hu ChMV Gc 5ong 7;& c2c k] tW ChPn c2ch. Sau K ChFng th4c
Split{} Gc gOi trong chu\i n;Vv .; truV`n k#t !uD .;o &\i .ng 7aCu
foreach ( string subString in s1.Split(delimiters) )
*hu\i output ch4a c2c chu\i k#t !uD Gc khfi tBo 7; chu\i r\ng. PV ch$ng ta tBo ra chu\i
outCut LYng Ln Lc. ^mu ti9n 7; ni gi2 tr: ca Li#n #& ctrv ti#C th'o 7; th9& 5hu hai
chh&v ri a chu\i Gc chia ra tJ chu\i Lan muv .; cui cong 7; th9& k] tW !ua 5ng &i.
; Ln Lc tr9n c4 Gc 7aC #n khi n;o chu\i kh>ng cn chia ra Gc.
*K &et .hn ` cmn nKi 7; ki3u 5? 7i/u string kh>ng Gc thi#t k# cho .i/c th9& .;o &et
chu\i :nh 5Bng sXn 3 tBo ra &et chu\i &i trong &\i .ng 7aC tr9nv n9n ch$ng ta &i ChDi
th9& .;o tJng k] tW nh .SV. Met 7C StringBuilder Gc tBo ra 3 Ch6c .6 cho nhu cmu thao
t2c chu\i tt hFn.
Thao t/c tr5n chu[i 2ong StringBuilder
+C StringBuilder Gc sE 56ng 3 tBo ra .; L sung c2c chu\i. [aV cK th3 nKi 7C n;V
chInh 7; Chmn Kng gKi ca &et Le khfi 5Wng cho &et String. Met s th;nh .i9n !uan trOng
StringBuilder Gc tK& t_t trong LDng 10.2 nh sauu
V&st[G.$tringBuilder
P4/Nng t4`c t ng4u6
Capacity() TruV cSC haV g2n &et s k] tW &; StringBuilder n_& gi?.
Chars() *hb &6c.
Length() Thi#t 7SC haV truV cSC chi`u 5;i ca chu\i
MaxCapacity() TruV cSC 5ung 7Gng 7n nhht ca StringBuilder
Append() Ni &et ki3u i tGng .;o cui ca StringBuilder
AppendFormat() ThaV th# :nh 5Bng U2c :nh LYng gi2 tr: Gc :nh 5Bng
ca &et i tGng.
EnsureCapacity() ^D& LDo rYng StringBuilder hi/n thi cK khD nqng ti thi3u
7n nh &et gi2 tr: U2c :nh.
Insert() *hn &et i tGng .;o &et .: trI U2c :nh
Replace() ThaV th# tht cD th3 hi/n ca &et k] tW U2c :nh .i nh?ng
k] tW &i.
4*ng 1$(2 Ph;<ng thP+ +7a #op %trin&Bui"'er
X/L:Ch1;i
2AT
NgnNgLpTrnhC#
"h>ng ging nh Stringv StringBuilder th 5 thaV i. "hi ch$ng ta L sung &et i tGng
StringBuilder th ch$ng ta z 7;& thaV i tr9n gi2 tr: thSt ca chu\iv ch4 kh>ng ChDi tr9n LDn
sao. I 56 &inh hOa 10.N thaV th# i tGng String LYng &et i tGng StringBuilder.
89 d: minh hBa 1$(G ) Sn d:ng +h>ai %trin&Bui"'er.
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
namespace ProgrammingCSharp
{
using System;
using System.Text;
public class StringTester
{
static void Main()
{
// khi tao chui d s dng
string s1 = "Mot, hai, ba Trung Tam Dao Tao CNTT;
// tao ra hng k tu khong trng v du phy
const char Space = ` `;
const char Comma = `,;
// tao ra mng phn cch
char[] delimiters = new char[]
{
Space,
Comma
};
// s dng StringBuilder d tao chui output
StringBuilder output = new StringBuilder();
int ctr = 1;
// chia chui v dng vng lp d da kt qu vo
// mng cc chui
foreach ( string subString in s1.Split(delimiters) )
{
// AppendFormat ni mt chui doc dinh dang
output.AppendFormat("{0}: {1}\n, ctr++, subString);
}// end foreach
Console.WriteLine( output );
}
}
}
X/L:Ch1;i
2T0
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
*h$ng ta chb thaV Chmn cui ca oBn chFng trnh 10.). , r;ng .i/c sE 56ng StringBuilder
thuSn ti/n hFn 7; .i/c sE 56ng c2c to2n tE L sung trong chu\i. PV ch$ng ta sE 56ng
ChFng th4c AppendFormat() ca StringBuilder 3 ni th9& &et chu\i Gc :nh 5Bng 3
tBo ra &et chu\i &i. ^i`u n;V !u2 5 5;ng .; kh2 7; hi/u !uD. "#t !uD chFng trnh thWc
hi/n cng tGng tW nh .I 56 &inh hOa 10.) 5ong Stringu
1: Mot
):
3: hai
*:
5: ba
+: rung
6: a#
7: Dao
9: ao
10: CN
%/c Ii0u th1c quL t^c ('#gu,ar EU-r#ssion)
8i3u th4c !ui t_c 7; &et ng>n ng? &Bnh 5ong 3 &> tD .; thao t2c .qn LDn. Met Li3u
th4c !ui t_c thng Gc 2C 56ng cho &et chu\iv haV &et tSC hGC c2c k] tW. Th>ng thng
&et chu\i 7; to;n Le .qn LDn haV t;i 7i/u.
"#t !uD ca .i/c 2C 56ng &et Li3u th4c !ui t_c #n &et chu\i 7; trD .` &et chu\i con
hoac 7; trD .` &et chu\i &i cK th3 Gc L sung tJ &et .;i Chmn ca chu\i nguV9n thV Lan
mu. *h$ng ta n9n nh rYng string 7; kh>ng th3 thaV i Gc .; 5o K cng kh>ng th3 thaV
i Lfi Li3u th4c !ui t_c.
8Yng c2ch 2C 56ng chInh U2c Li3u th4c !ui t_c cho chu\i sauu
Mot, hai, ba, Trung Tam Dao Tao CNTT
ch$ng ta cK th3 trD .` Lht c4 haV tht cD 5anh s2ch c2c chu\i con {Motv haiv...} .; cK th3 tBo ra
c2c Chi9n LDn chu\i Gc L sung ca nh?ng chu\i con {nh u TrUng TAMv...}.
8i3u th4c !ui t_c n;V Gc !uV#t :nh Lfi c$ Ch2C c2c k] tW !ui t_c ca chInh LDn thPn nK.
Met Li3u th4c !ui t_c Lao g& hai ki3u k] tWu
"] tW Lnh thng {7it'ra7}u nh?ng k] tW n;V &; ch$ng ta sE 56ng 3 so khC .i
chu\i k] tW Ich.
M'tacharact'ru 7; c2c Li3u tGng ac Li/tv cK h;nh eng nh 7; c2c 7/nh trong Le ChPn
tIch {Cars'r} ca Li3u th4c.
8e ChPn tIch 7; &et cF ch# cK tr2ch nhi/& hi3u Gc c2c Li3u th4c !ui t_c. I 56 n#u nh
ch$ng ta tBo &et Li3u th4c !ui t_c nh sauu
(FromToSubjectDate):
X/L:Ch1;i
2T1
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
8i3u th4c n;V sH so khC .i Lht c4 chu\i con n;o .i nh?ng tJ nh sFromtv sTotv
sSubjecttv .; sDatet &in 7; nh?ng tJ n;V L_t mu LYng k] tW 5ng &i {} .; k#t th$c .i
5hu hai chh& {u}.
"] hi/u 5hu & {} trong trng hGC n;V chb ra cho Le ChPn tIch Li3u th4c !ui t_c rYng chu\i
&; ch$ng ta &un t& ki#& ChDi L_t mu tJ 5ng &i. Trong Li3u th4c n;V c2c k] tW nh
s{tvt}tv .; st 7; c2c &'tacharact'r 5ong 3 nhK& c2c chu\i k] tW Lnh thng nh sFromtv
sTotvtSubjecttv .; sDatet .; chb ra rYng Lht c4 sW 7Wa chOn n;o trong s K `u Gc so
khC $ng. Ngo;i ra k] tW st cng 7; k] tW &'tacharact'r chb ra L_t mu 5ng &i.
TK& 7Bi .i chu\i Li3u th4c !ui t_c nhu
(FromToSubjectDate):
ta cK th3 Ch2t Li3u th'o ng>n ng? tW nhi9n nh sauu sPhC hHp Noi Xt +P +h>ai n-o rt =.>
bng mYt dEng moi =;H+ th'o sa> gi mYt trong cn +h Fromf 0of S>R'+tf Dat' N- th'o
sa> #- 1t tO dX> hai +hXmt.
i/c trnh L;V mV .` Li3u th4c !uV t_c .Gt !u2 ChB& .i ca cun s2ch n;Vv 5o sW a
5Bng .; kh2 Ch4c tBC ca nK. TuV nhi9nv trong ChB& .i trnh L;V ca chFng 10 n;Vv ch$ng ta
sH Gc t& hi3u &et s c2c thao t2c Ch Li#n .; h?u 56ng ca Li3u th4c !uV t_c.
S> 23ng Ii0u th1c quL t^c qua ,- '#g#U
MS.NET cung chC &et hng ti#C cSn hng i tGng {oLk'cti ori'nt'5 aCCroa5} cho
Li3u th4c !uV t_c 3 so khCv t& ki#& .; thaV th# chu\i. 8i3u th4c !uV t_c ca ng>n ng? *@
7; Gc UPV 5Wng tJ 7C regexp ca ng>n ng? 1'r7-.
Na&sCac' System.Text.RegularExpressions ca th .i/n 8*+ {8as' *7ass +iLrarV} ch4a
Wng tht cD c2c i tGng 7i9n !uan #n Li3u th4c !uV t_c trong &>i trng .NET. ; 7C
!uan trOng nhht &; Li3u th4c !uV t_c h\ trG 7; Regex. Ta cK th3 tBo th3 hi/n ca 7C Regex .;
sE 56ng &et s ChFng th4c tdnh trong .I 56 &inh hOa 10.-.
89 d: minh hBa 1$(Q) Sn d:ng #op ['g'_(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
namespace ProgrammingCSharp
{
using System;
using System.Text;
using System.Text.RegularExpressions;
public class Tester
{
static void Main()
{
// khi tao chui s dng
string s1 = "Mot, hai, ba, Trung Tam Dao Tao CNTT;
X/L:Ch1;i
2T2
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
// tao chui biu thc quy tc
Regex theRegex = new Regex(" , );
StringBuilder sBuilder = new StringBuilder();
int id = 1;
// s dng vng lp d ly cc chui con
foreach ( string subString in theRegex.Split(s1))
{
// ni chui va tm doc trong biu thc quy tc
// vo chui StringBuilder theo dinh dang sn.
sBuilder.AppendFormat("{0}: {1} \n, id++, subString);
}
Console.WriteLine("{0}, sBuilder);
}// end Main
}// end class
}// end namespace
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
1: Mot
): hai
3: ba
*: rung
5: a#
+: Dao
6: ao
7: CN
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
I 56 &inh hOa L_t mu LYng .i/c tBo &et chu\i s1v nei 5ung ca chu\i n;V tFng tW nh
chu\i trong &inh hOa 10.N.
string s1 = "Mot, hai, ba, Trung Tam Dao Tao CNTT;
T#C th'o &et Li3u th4c !uV t_c Gc tBo rav Li3u th4c n;V Gc 5ong 3 t& ki#& &et chu\iu
Regex theRegex = new Regex(" , );
PV &et Le khfi tBo nBC chng ca Regex 7hV &et chu\i Li3u th4c !uV t_c nh 7; tha& s
ca nK. ^i`u n;V gPV ra sW khK hi3u. Trong ng? cDnh ca &et chFng trnh *@v c2i n;o 7;
Li3u th4c !uV t_cu chu\i Gc a .;o Le khfi 5Wng haV 7; i tGng Regex ThSt sW th
chu\i k] tW Gc truV`n .;o chInh 7; Li3u th4c !uV t_c th'o ] nghda truV`n thng ca thuSt
ng? n;V. TuV nhi9nv th'o !uan i3& hng i tGng ca ng>n ng? *@v i &6c haV tha& s
ca Le khfi tBo chb Fn thumn 7; chu\i k] tWv .; chInh Regex &i 7; i tGng Li3u th4c !uV
t_c
X/L:Ch1;i
2T)
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
1hmn cn 7Bi ca chFng trnh thWc hi/n ging nh .I 56 &inh hOa 10.N trc. NgoBi trJ .i/c
gOi ChFng th4c Split() ca i tGng Regex ch4 kh>ng ChDi ca chu\i s1. Regex.Split()
h;nh eng cng tFng tW nh c2ch String.Split(). "#t !uD trD .` 7; &Dng c2c chu\iv PV chInh
7; c2c chu\i con so khC t& Gc th'o &cu a ra trong th'Regex.
1hFng th4c Regex.Split() 7; ChFng th4c Gc nBC chng. 1hi9n LDn Fn giDn Gc gOi
trong th3 hi/n ca Regex Gc 5ong nh trong .I 56 10.-. Ngo;i ra cn cK &et Chi9n LDn tdnh
ca ChFng th4c n;V. 1hi9n LDn n;V 7hV &et chu\i 3 thWc hi/n .i/c t& ki#& .; &et &cu 3
so khC. Ti#C sau 7; &inh hOa 10.0 sE 56ng ChFng th4c tdnh
89 d: minh hBa 1$(v) Sn d:ng ph;<ng thP+ tenh ['g'_(Sp#it\](
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
namespace ProgrammingCSharp
{
using System;
using System.Text;
using System.Text.RegularExpressions;
public class Tester
{
static void Main()
{
// tao chui tm kim
string s1 = "Mot, hai, ba Trung Tam Dao Tao CNTT;
StringBuilder sBuilder = new StringBuilder();
int id = 1;
// dy khng tao th hin ca Regex do s dng phong
// thc tnh ca lp Regex.
foreach( string subStr in Regex.Split( s1, " , ))
{
sBuilder.AppendFormat("{0}: {1}\n, id++, subStr);
}
Console.WriteLine("{0}, sBuilder);
}
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
"#t !uD ca .I 56 &inh hOa 10.0 ho;n to;n tFng tW nh &inh hOa 10.-. TuV nhi9n trong
chFng trnh th ch$ng ta kh>ng tBo th3 hi/n ca i tGng Regex. ThaV .;o K ch$ng ta sE
56ng trWc ti#C ChFng th4c tdnh ca Regex 7; Split(). 1hFng th4c n;V 7hV .;o hai tha& sv
X/L:Ch1;i
2TN
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
tha& s mu ti9n 7; chu\i Ich cmn thWc hi/n so khC .; tha& s th4 hai 7; chu\i Li3u th4c
!uV t_c 5ong 3 so khC.
S> 23ng '#g#U 0 t" ki" tT- h@-
[ai 7C Gc th9& .;o trong na&'sCac' .NET cho ChgC ch$ng ta thWc hi/n .i/c t& ki#&
&et chu\i &et c2ch 7SC i 7aC 7Bi cho #n h#t chu\iv .; k#t !uD trD .` 7; &et tSC hGC. TSC hGC
Gc trD .` cK ki3u 7; MatchCollectionv Lao g& kh>ng cK haV nhi`u i tGng Match. [ai
thuec tInh !uan trOng ca nh?ng i tGng Match 7; chi`u 5;i .; gi2 tr: ca nKv ch$ng cK th3
Gc Oc nh trong .I 56 &inh hOa 10.= 5i PV.
89 d: minh hBa 1$(w) Sn d:ng Mat+hCo##'+tion N- Mat+h(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
namespace ProgrammingCSharp
{
using System;
using System.Text.RegularExpressions;
class Tester
{
static void Main()
{
string string1 = "Ngon ngu lap trinh C Sharp;
// tm bt c chui con no khng c khong trng
// bn trong v kt thc l khong trng
Regex theReg = new Regex((\S+)\s);
// tao tp hop v nhn kt qu so khp
MatchCollection theMatches = theReg.Matches(string1);
// lp d ly kt qu t tp hop
foreach ( Match theMatch in theMatches)
{
Console.WriteLine("Chieu dai: {0}, theMatch.Length);
// nu tn tai chui th xut ra
if ( theMatch.Length != 0)
{
Console.WriteLine("Chuoi: {0}, theMatch.ToString());
}// end if
}// end foreach
}// end Main
}// end class
}// end namespace
X/L:Ch1;i
2T-
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
Chieu dai: 5
Chuoi: Ngon
Chieu dai: *
Chuoi: ngu
Chieu dai: *
Chuoi: !a&
Chieu dai: +
Chuoi: trinh
Chieu dai: )
Chuoi: C
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
I 56 10.= L_t mu LYng .i/c tBo &et chu\i t& ki#& Fn giDnu
string string1 = "Ngon ngu lap trinh C Sharp;
.; &et Li3u th4c !uV t_c 3 thWc hi/n .i/c t& ki#& tr9n chu\i string1u
Regex theReg = new Regex((\S+)\s);
*hu\i S t& k] tW kh>ng ChDi k] tW tr_ng .; 5hu ceng chb ra rYng cK th3 cK &et haV nhi`u k]
tW. *hu\i s {ch? thng} chb ra 7; khoDng tr_ng. "#t hGC 7Bi 7; t& &et chu\i kh>ng cK
khoDng tr_ng L9n trong nhng th'o sau cong 7; &et khoDng tr_ng. *h$ng ta 7u ] khai L2o
chu\i Li3u th4c !uV t_c 5Bng chu\i nguV9n .qn 3 5 5;ng 5ong c2c k] tW 'scaC' nh {}.
"#t !uD Gc trnh L;V 7; nq& tJ mu ti9n Gc t& thhV. TJ cui cong kh>ng Gc t& thhV
Lfi . nK kh>ng Gc th'o sau Lfi khoDng tr_ng. N#u ch$ng ta chn &et khoDng tr_ng sau
ch? sSharCt .; trc 5hu ngoac Kngv th chFng trnh sH t& Gc th9& ch? sSharCt.
Thuec tInh Length 7; chi`u 5;i ca chu\i con t& ki#& Gc. *h$ng ta sH t& hi3u sPu hFn .`
thuec tInh n;V trong Chmn sE 56ng 7C CaptureCollection f cui chFng.
S> 23ng '#g#U 0 go" nhG"
^>i khi 7SC trnh ch$ng ta cmn go& nhK& &et s c2c Li3u th4c tFng tW .i nhau th'o &et
!uV :nh n;o K. I 56 nh ch$ng ta cmn t& ki#& :a chb <1 .; nhK& ch$ng 7Bi .;o trong
nhK& IPAddresses Gc t& thhV Lht c4 Pu trong &et chu\i.
+C Group cho ChgC ch$ng ta tBo nh?ng nhK& .; t& ki#& 5Wa tr9n Li3u th4c !uV t_cv .; th3
hi/n k#t !uD tJ &et nhK& Li3u th4c Fn.
Met Li3u th4c nhK& :nh r &et nhK& .; cung chC &et Li3u th4c !uV t_cv Lht c4 chu\i con
n;o Gc so khC Lfi Li3u th4c !uV t_c th sH Gc th9& .;o trong nhK&. I 56v 3 tBo &et
nhK& ch$ng ta cK th3 .i#t nh sauu
(?<ip>(\d\ .)+)\s
X/L:Ch1;i
2T0
NgnNgLpTrnhC#
+C Match 5cn Uuht tJ nhK& Groupv .; cK &et tSC hGC gOi 7; Groups ch4a tht cD c2c nhK&
&; Match t& thhV.
i/c tBo .; sE 56ng tSC hGC Groups .; 7C Group Gc &inh hOa trong .I 56 10.A nh sauu
89 d: minh hBa 1$(x) Sn d:ng #op 2ro>p(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
namespace ProgrammingCSharp
{
using System;
using System.Text.RegularExpressions;
class Tester
{
public static void Main()
{
string string1 = "10:20:30 12.0.0.0 Dolphin.net;
// nhm thi gian bng mt hay nhiu con s hay du :
// v theo sau bi khong trng.
Regex theReg = new Regex((?<time>(\d\:)+)\s +
// dia ch IP l mt hay nhiu con s hay du chm theo
// sau bi khong trng
(?<ip>(\d\.)+)\s +
// dia ch web l mt hay nhiu k tu
(?<site>\S+));
// ly mt tp hop cc chui doc so khp
MatchCollection theMatches = theReg.Matches( string1 );
// s dng vng lp d ly cc chui trong tp hop
foreach (Match theMatch in theMatches)
{
if (theMatch.Length != 0)
{
Console.WriteLine("\ntheMatch: {0}, theMatch.ToString());
// hin thi thi gian
Console.WriteLine("Time: {0}, theMatch.Groups["time]);
// hin thi dia ch IP
Console.WriteLine("IP: {0}, theMatch.Groups["ip]);
// hin thi dia ch web site
Console.WriteLine("Site: {0}, theMatch.Groups["site]);
}// end if
}// end foreach
X/L:Ch1;i
2T=
NgnNgLpTrnhC#
}// end Main
}// end class
}// end namespace
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
I 56 &inh hOa 10.A L_t mu LYng .i/c tBo &et chu\i Fn giDn 3 t& ki#& nh sauu
string string1 = "10:20:30 12.0.0.0 Dolphin.net;
*hu\i n;V cK th3 Gc t& thhV trong nei 5ung ca c2c tSC tin 7og ghi nhSn c2c th>ng tin f
('L s'r.'r haV tJ c2c k#t !uD t& ki#& Gc trong cF sf 5? 7i/u. Trong .I 56 Fn giDn n;V cK
La cetv &et cet mu ti9n ghi nhSn thi gianv cet th4 hai ghi nhSn :a chb <1v .; cet th4 La ghi
nhSn :a chb ('L. M\i cet Gc ngqn c2ch Lfi khoDng tr_ng. pd nhi9n 7; trong c2c 4ng 56ng
thWc t# ta ChDi giDi !uV#t nh?ng .hn ` Ch4c tBC hFn n?av ch$ng ta cK th3 cmn ChDi thWc hi/n
.i/c t& ki#& Ch4c tBC hFn .; sE 56ng nhi`u k] tW ngqn c2ch hFn n?a.
Trong .I 56 n;Vv ch$ng ta &ong &un 7; tBo ra &et i tGng Regex 3 t& ki#& chu\i con
V9u cmu .; ChPn ch$ng .;o trong La nhK&u ti&'v :a chb <1v .; :a chb ('L. 8i3u th4c !uV t_c
f PV cng kh2 Fn giDnv 5o K cng 5 hi3u.
PV ch$ng ta !uan tP& #n nh?ng k] tW tBo nhK& nhu
<?<time>
phu ngoac Fn 5ong 3 tBo nhK&. MOi th4 gi?a 5hu ngoac &f trc 5hu .; 5hu ngoac
Kng {trong trng hGC n;V sau 5hu } Gc U2c :nh 7; &et nhK&. *hu\i ?<time> :nh ra
t9n ca nhK& .; 7i9n !uan #n tht cD c2c chu\i k] tW Gc so khC th'o Li3u th4c !uV t_c (\d
\:)+)\s. 8i3u th4c n;V cK th3 Gc 5in giDi nhu smYt hay nhiD> +on sc hay nhng dX> )
th'o sa> gi mYt 1ho*ng trrngt.
TFng tW nh .SVv chu\i ?<ip> :nh t9n ca nhK& iCv .; ?<site> 7; t9n ca nhK& sit'.
Ti#C th'o 7; &et tSC hGC Gc :nh nghda 3 nhSn tht cD c2c chu\i con Gc so khC nh
sauu
MatchCollection theMatches = theReg.Matches( string1 );
ng 7aC foreach Gc 5ong 3 7hV ra c2c chu\i con Gc t& thhV trong tSC hGC.
N#u chi`u 5;i Length ca Match 7; 7n hFn 0v t4c 7; t& thhV th ch$ng ta sH Uuht ra chu\i
Gc t& thhVu
Console.WriteLine("\ntheMatch: {0}, theMatch.ToString());
; k#t !uD ca .I 56 7;u
theMatch: 10:20:30 12.0.0.0 Dolphin.net
Sau K chFng trnh 7hV nhK& ti&' tJ tSC hGC nhK& ca Match .; Uuht ra &;n hnh LYng c2c
7/nh nh sauu
Console.WriteLine("time: {0}, theMatch.Groups["time]);
"#t !uD 7; u
Time: 10:20:30
TFng tW nh .SV .i nhK& ip .; siteu
X/L:Ch1;i
2TA
NgnNgLpTrnhC#
Console.WriteLine("IP: {0}, theMatch.Groups["ip]);
// hin thi dia ch web site
Console.WriteLine("site: {0}, theMatch.Groups["site]);
Ta nhSn Gc k#t !uDu
IP: 12.0.0.0
Site: Dolphin.net
Trong .I 56 10.A tr9n th tSC hGC Match chb so khC 5uV nhht &et 7mn. TuV nhi9nv nK cK th3 so
khC nhi`u hFn n?a trong &et chu\i. ^3 7;& Gc i`u n;Vv ch$ng ta cK th3 L sung chu\i
t& ki#& Gc 7hV tJ trong &et 7og fi7' nh sauu
String string1 = "10:20:30 12.0.0.0 Dolphin.net +
"10:20:31 12.0.0.0 Mun.net +
"10:20:32 12.0.0.0 Msn.net ;
*hu\i n;V sH tBo ra La chu\i con so khC Gc t& thhV trong MatchCollection. ; k#t !uD ta
cK th3 thhV Gc 7;u
theMatch: 10:20:30 12.0.0.0 Dolphin.net
Time: 10:20:30
IP: 12.0.0.0
site: Dolphin.net
theMatch: 10:20:31 12.0.0.0 Mun.net
Time: 10:20:31
IP: 12.0.0.0
Site: Mun.net
theMatch: 10:20:32 12.0.0.0 Msn.net
time: 10:20:32
IP: 12.0.0.0
Site: Msn.net
Trong .I 56 n;V Chmn L sungv th theMatches ch4a La i tGng Match. M\i 7mn 7aC th c2c
chu\i con Gc t& thhV {La 7mn} .; ch$ng ta cK th3 Uuht ra chu\i cng nh tJng nhK& ri9ng
L9n trong ca chu\i con Gc t& thhV.
S> 23ng ,- %a-tur#%o,,#ction
M\i khi &et i tGng Regex t& thhV &et chu\i conv th &>t th3 hi/n Capture Gc tBo
ra .; Gc th9& .;o trong &et tSC hGC CaptureCollection. M\i &et i tGng Capture th3
hi/n &et chu\i con ri9ng. M\i nhK& cK &et tSC hGC c2c Capture Gc t& thhV trong chu\i
con cK 7i9n h/ .i nhK&.
X/L:Ch1;i
2TT
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
Thuec tInh !uan trOng ca i tGng Capture 7; thuec tInh Lengthv PV chInh 7; chi`u 5;i ca
chu\i con Gc n_& gi?. "hi ch$ng ta hQi Match chi`u 5;i ca nKv th ch$ng ta sH nhSn Gc
Capture.Length 5o Match Gc 5cn Uuht tJ Group .; #n 7Gt Group 7Bi Gc 5cn Uuht tJ
Capture.
M> hnh k# thJa trong Li3u th4c !uV t_c ca .NET cho ChgC Match thJa hfng nh?ng giao
5i/n ChFng th4c .; thuec tInh ca nh?ng 7C cha ca nK. Th'o ] nghda n;Vv th &et Group 7;
&et Capture {ZrouC isia *aCtur'}v 7; &et i tGng Capture Kng gKi c2c ] tfng .` c2c
nhK& Li3u th4c. ^#n 7uGt Matchv nK cng 7; &et Group {Match isia ZrouC}v nK Kng gKi tht
cD c2c nhK& Li3u th4c con Gc so khC trong Li3u th4c !uV t_c {'& chi ti#t hFn trong
chFng -u "# thJa .; a hnh}.
Th>ng thngv ch$ng ta sH t& thhV chb &et Capture trong tSC hGC CaptureCollection nhng
i`u n;V kh>ng ChDi .SV. *h$ng ta thE t& hi3u .hn ` nh sauv f PV ch$ng ta sH gaC trng
hGC 7; ChPn tIch &et chu\i trong K cK nhK& t9n ca c>ng tV Gc Uuht hi/n hai 7mn. ^3
nhK& ch$ng 7Bi trong chu\i t& thhV ch$ng ta tBo nhK& ?<company> Uuht hi/n f hai nFi
trong &cu Li3u th4c !uV t_c nh sauu
Regex theReg = new Regex((?<time>(\d\:)+)\s +
(?<company>\S+)\s +
(?<ip>(\d\.)+)\s +
(?<company>\S+)\s);
8i3u th4c !uV t_c n;V nhK& Lht c4 chu\i n;o hGC .i &cu so khC timev .; cng nh Lht c4
chu\i n;o th'o nhK& ip. ZiD sE ch$ng ta 5ong chu\i sau 3 7;& chu\i t& ki#&u
string string1 = "10:20:30 IBM 12.0.0.0 HP;
*hu\i n;V ch4a t9n ca hai c>ng tV f hai .: trI kh2c nhauv .; k#t !uD thWc hi/n chFng trnh
7; nh sauu
theMatch: 10:20:30 IBM 12.0.0.0 HP
Time: 10:20:30
IP: 12.0.0.0
Company: HP
^i`u g UDV ra TBi sao nhK& Company chb th3 hi/n gi2 tr: HP. *n chu\i mu ti9n f Pu haV
7; kh>ng Gc t& thhV *Pu trD 7i chInh U2c 7; &6c th4 hai z .i#t chng &6c mu. TuV
nhi9nv Group .cn 7u gi? cD hai gi2 tr:. ; ta 5ong tSC hGC Capture 3 7hV c2c gi2 tr: n;V.
89 d: minh hBa 1$(y) 0m hii> tp hHp Capt>r'Co##'+tion(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
namespace ProgrammingCSharp
{
using System;
using System.Text.RegularExpressions;
class Test
X/L:Ch1;i
)00
NgnNgLpTrnhC#
{
public static void Main()
{
// tao mt chui d phn tch
// lu l tn cng ty doc xut
// hin c hai noi
string string1 = "10:20:30 IBM 12.0.0.0 HP;
// biu thc quy tc vi vic nhm hai ln tn cng ty
Regex theReg = new Regex((?<time>(\d\:)+)\s +
(?<company>\S+)\s +
(?<ip>(\d\ .)+)\s +
(?<company>\S+)\s);
// da vo tp hop cc chui doc tm thy
MatchCollection theMatches = theReg.Matches( string1 );
// dng vng lp d ly kt qu
foreach ( Match theMatch in theMatches)
{
if ( theMatch.Length !=0 )
{
Console.WriteLine("theMatch: {0}, theMatch.ToString());
Console.WriteLine("Tme: {0}, theMatch.Groups["time]);
Console.WriteLine("IP{0}, theMatch.Groups["ip]);
Console.WriteLine("Company: {0}, theMatch.Groups["company]);
// lp qua tp hop Capture d ly nhm company
foreach ( Capture cap in theMatch.Groups["Company].Captures)
{
Console.WriteLine("Capture: {0}, cap.ToString());
}// end foreach
}// end if
}// end foreach
}// end Main
}// end class
}// end namespace
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
theMatch: 10:)0:30 83M 1)6.0.0.0 ,E
i#e: 10:)0:30
8E: 1)6.0.0.0
X/L:Ch1;i
)01
NgnNgLpTrnhC#
Co#&an': ,E
Ca&ture: 83M
Ca&ture: ,E
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Trong oBn .ng 7aC cui congu
foreach ( Capture cap in theMatch.Groups["Company].Captures)
{
Console.WriteLine("Capture: {0}, cap.ToString());
}// end foreach
^oBn 7aC n;V 7aC !ua tSC hGC Capture ca nhK& Company. *h$ng ta thE t& hi3u c2ch ChPn
tIch nh sau. Trnh Li9n 5:ch L_t mu t& &et tSC hGC c2i &; ch$ng sH thWc hi/n .i/c 7aC.
theMatch 7; &et i tGng cK &et tSC hGC t9n 7; Groups. TSC hGC Groups cK &et chb &6c
a ra &et chu\i .; trD .` &et i tGng Group. po .SVv 5ng 7/nh sau trD .` &et i tGng
Fn Groupu
theMatch.Groups["company];
^i tGng Group cK &et tSC hGC t9n 7; Capturesv .; 5ng 7/nh ti#C sau trD .` &et tSC hGC
Captures cho Group 7u gi? tBi Groupsscompanyt L9n trong i tGng theMatchu
theMatch.Groups["company].Captures
ng 7aC foreach 7aC !ua tSC hGC Capturesv .; 7hV tJng th;nh Chmn ra .; g2n cho Li#n c6c
Le capv Li#n n;V cK ki3u 7; Capture. *h$ng ta cK th3 U'& tJ k#t !uD 7; cK hai th;nh Chmn
Gc 7u gi? 7; u IBM .; HP. *hu\i th4 hai .i#t chng 79n chu\i th4 nhht trong nhK&v 5o .SV
chb hi3n th: gi2 tr: th4 hai 7; HP. TuV nhi9nv LYng .i/c sE 56ng tSC hGC Captures ch$ng ta cK
th3 thu Gc cD hai gi2 tr: Gc 7u gi?.
%Pu hSi *7 tr= ,i
CU> hVi 1u Nh?ng tK& t_t cF LDn .` chu\i
0r* #Wi 1) Ch>ai #- 1ii> d #iI> th;Wng =;H+ sn d:ng nhXt trong #p trnh( 0rong ngn ng
C#f +h>ai =;H+ ha trH rXt mLnh thng A>a +,+ #6p ND +h>ai N- ii> thP+ A>y tr+( Ch>ai #-
1ii> d #iI> tham +hi@>f +hPa +,+ 1t tO ni+od'( C,+ thao t,+ tr%n =ci t;Hng +h>ai 1hng
#-m thay =ki gi, trM +7a +h>ai m- ta +hZ nhn =;H+ 1@t A>* tr* ND( 0>y nhi%nf C# +>ng +Xp
#op %trin&Bui"'er +ho phqp thao t,+ trO+ ti@p =i k s>ng +h>ai(
CU> hVi 2u 8i3u th4c !uV t_c 7; g
0r* #Wi 2) 4ii> thP+ A>y tr+ #- ngn ng dCng =i m t* N- thao t,+ Njn *n( MYt ii> thP+
A>y tr+ th;Wng =;H+ ,p d:ng +ho mYt +h>ai Njn *n hay to-n Y t-i #iI> n-o =6( ?@t A>* +7a
NiI+ ,p d:ng mYt ii> thP+ A>y tr+ #- ta nhn =;H+ mYt +h>ai 1@t A>*f +h>ai n-y +6 thi #-
+h>ai +on +7a +h>ai ,p d:ng hay +6 thi #- mYt +h>ai moi =;H+ k s>ng t5 +h>ai an =.>(
CU> hVi Fu Thao t2c thng UuV9n thWc hi/n tr9n &et chu\i 7; thao t2c n;o
X/L:Ch1;i
)02
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
0r* #Wi F) Nh; n6 %n tr%nf thao t,+ th;Wng _>y%n thO+ hiIn tr%n mYt +h>ai #- tm 1i@m +h>ai
+on thVa A>y tr+ n-o =6( MYt ngn ng n@> mLnh ND thao t,+ tr%n +h>aif +hr+ +hrn ph*i
+>ng +Xp nhiD> ph;<ng thP+ thao t,+ tct =i tm 1i@m +,+ +h>ai +on th'o A>y tr+( Ngn ng
C# +mng rXt mLnh ND =iim n-yf do +h3ng th5a h;gng t5 +,+ #op thao t,+ tr%n +h>ai +7a (
N/0(
%Pu hSi th5"
CU> hVi 1) C6 ao nhi%> +,+h tLo +h>ai trong ngn ng C#u
CU> hVi 2) Ch>ai 8'ratim #- +h>ai nh; th@ n-ou &Jy +ho mYt N-i N9 d: minh hBa ND +h>ai
n-y N- dipn gi*i t nghea +7a +h3ngu
CU> hVi F) SO 1h,+ nha> +< *n gia mYt +h>ai tLo t5 =ci t;Hng string N- %trin&Bui"'eru
CU> hVi G) ?hi n-o th n%n dCng +h>ai tLo t5 #op string N- %trin&Bui"'eru
CU> hVi Q) MYt ii> thP+ A>y tr+ +6 ao nhi%> 1ii> 1t tOu
CU> hVi v) MYt ii> thP+ A>y tr+ sa> =Uy so 1hop =iD> gu
\Nam'"ddr'ssPhon'Fa_])
47i tT-
4-i tp 1) 8i@t +h;<ng trnh +ho phqp ng;Wi dCng nhp N-o mYt +h>ai( Sa> =6 =@m sc 1t tO
_>Xt hiIn +7a t5ng 1t tO trong +h>ai nh; N9 d: sa>)
a ) 2
g ) Q
2 ) 1
((((
4-i tp 2) 8i@t +h;<ng trnh tm mYt +h>ai +on trong mYt +h>ai +ho tr;o+( Ch;<ng trnh +ho
phqp ng;Wi dCng nhp N-o mYt +h>aif N- +h>ai +on +.n tm( ?@t A>* #- +h>ai +on +6 tm thXy
hay 1hngf n@> tm thXy th hJy =;a ra NM tr9 =.> ti%n tm thXy(
4-i tp F) 8i@t +h;<ng trnh tm sc #.n _>Xt hiIn mYt +h>ai +on trong mYt +h>ai +ho tr;o+(
Ch;<ng trnh +ho phqp ng;Wi dCng nhp N-o mYt +h>ai N- +h>ai +on +.n =@m( ?@t A>* hiin
thM +h>aif +h>ai +on N- +,+ NM tr9 m- +h>ai +on _>Xt hiIn trong +h>ai(
4-i tp G) 8i@t +h;<ng trnh +ho phqp ng;Wi dCng nhp N-o mYt +h>aif rKi thO+ hiIn NiI+ =*o
+,+ 1t tO trong +h>ai th'o thP tO ng;H+ #Li(
4-i tp Q) 8i@t +h;<ng trnh +rt +,+ t5 +6 nghea trong +U>( 89 d: nh; +ho t5) 0h>+ hanh #ap
trinh th +rt th-nh G +h) 0h>+f hanhf #apf trinh(
4-i tp v) &Jy Ni@t +h;<ng trnh sn d:ng ii> thP+ A>y tr+ =i #Xy ra +h>ai ng-yzth,ngznjm
trong mYt +h>ai +ho tr;o+u Cho phqp ng;Wi dCng nhp N-o mYt +h>ai rKi dCng ii> thP+ A>y
tr+ N5a tLo ra thO+ hiIn NiI+ tm 1i@m(
4-i tp w) &Jy Ni@t +h;<ng trnh sn d:ng ii> thP+ A>y tr+ =i #Xy ra thWi gian giW)ph3t)giUy
trong mYt +h>ai +ho tr;o+u Ch;<ng trnh +ho phqp ng;Wi dCng nhp N-o mYt +h>ai rKi dCng
ii> thP+ A>y tr+ N5a tLo =i thO+ hiIn NiI+ tm 1i@m(
X/L:Ch1;i
)0)
NgnNgLpTrnhC#
C4/Nng 11
C CH w SwlN , Vy 2TN
& P@&!n
V= 'ng O& P@&!n X_ n<c n4Jn +4/Nng t4`c )Ac t4(c t4i
& P@&!n tun4
xng O& P@&!n n4/ t4@~c ten4
T4i3t )J+ t4` t( t4i 4In4 H*i G"ng O& P@&!n
M@tic6sting
V( QiCn
CN c43 +@g)is4ing 7 s@gscriging
V( QiCn k O& P@&!n
C%@ 4ji k gIi tJ+
Trong 7SC trnh ch$ng ta thng i 5i/n .i tnh hung 7; khi ch$ng ta &un thWc hi/n
&et h;nh eng n;o Kv nhng hi/n tBi th cha U2c :nh Gc chInh U2c ChFng th4c haV sW
ki/n trong i tGng. I 56 nh &et n$t 7/nh Lutton Li#t rYng nK ChDi th>ng L2o cho .;i i
tGng khi nK Gc nhhnv nhng nK kh>ng Li#t i tGng haV nhi`u i tGng n;o cmn Gc
th>ng L2o. Tt hFn .i/c ni n$t 7/nh .i i tGng c6 th3v ch$ng ta cK th3 k#t ni n$t 7/nh
#n &et cF ch# V !uV`n .; sau K th ch$ng ta thWc hi/n .i/c V !uV`n #n ChFng th4c c6
th3 khi thWc thi chFng trnh.
Trong thi k mu ca &2V tInhv chFng trnh Gc thWc hi/n th'o trnh tW UE 7] tJng
Lc tumn tW cho #n khi ho;n th;nhv .; n#u ngi 5ong thWc hi/n &et sW tFng t2c th sH
7;& hBn ch# sW i`u khi3n hoBt eng kh2c ca chFng trnh cho #n khi sW tFng t2c .i
ngi 5ong chh& 54t.
TuV nhi9nv ng;V naV .i &> hnh 7SC trnh giao 5i/n ngi 5ong hOa {Zl<u ZraChica7
ls'r <nt'rfac'} i hQi &et c2ch ti#C cSn kh2cv .; Gc Li#t nh 7; 7SC trnh i`u khi3n sW
ki/n {'.'nti5ri.'n Crogra&&ing}. *hFng trnh hi/n Bi n;V a ra &et giao 5i/n tFng t2c
.i ngi 5ong .; sau K th ch cho ngi sE 56ng kIch hoBt &et h;nh eng n;o K. Ngi
sE 56ng cK th3 thWc hi/n nhi`u h;nh eng kh2c nhau nhu chOn c2c &6c chOn trong &'nuv
nhhn &et n$t 7/nhv cSC nhSt c2c > ch4a .qn LDnv...M\i h;nh eng nh .SV sH 5cn #n &et sW
C<Ch'=y>1yn!?&i4n
)0N
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
ki/n {'.'nt} Gc sinh ra. Met s c2c sW ki/n kh2c cng cK th3 Gc Uuht hi/n &; kh>ng cmn
h;nh eng trWc ti#C ca ngi 5ong. *2c sW ki/n n;V Uuht hi/n 5o c2c thi#t L: nh ng h
ca &2V tInh Ch2t ra th'o chu k thi gianv th i/n tE Gc nhSnv haV Fn giDn 7; L2o &et
h;nh eng sao chgC tSC tin ho;n th;nhv...
Met sW ki/n Gc Kng gKi nh &et ] tfng s+h>yIn g =6 _*y rat .; chFng trnh ChDi
2C 4ng 7Bi .i sW ki/n K. *F ch# sW ki/n .; V !uV`n g_n 7i`n .i nhauv Lfi . khi &et sW
ki/n Uuht hi/n th cmn ChDi ChPn Ch2t sW ki/n #n trnh UE 7] sW ki/n tFng 4ng. Th>ng trng
&et trnh UE 7] sW ki/n Gc thWc thi trong *@ nh 7; &et sW V !uV`n.
rV !uV`n cho ChgC &et 7C cK th3 V9u cmu &et 7C kh2c 7;& &et c>ng .i/c n;o Kv .;
khi thWc hi/n c>ng .i/c K th ChDi L2o cho 7C Li#t. rV !uV`n cng co th3 Gc sE 56ng 3
U2c nhSn nh?ng ChFng th4c chb Gc Li#t 7$c thWc thi chFng trnhv .; ch$ng ta sH t& hi3u
k .hn ` n;V trong Chmn chInh ca chFng.
& P@&!n ]'[)[g6t[^
Trong ng>n ng? *@v V !uV`n 7; 7C i tGng mu ti9n {firstic7ass oLk'ct}v Gc h\ trG
mV Lfi ng>n ng? 7SC trnh. Th'o k thuSt th V !uV`n 7; ki3u 5? 7i/u tha& chi#u Gc
5ong 3 Kng gKi &et ChFng th4c .i tha& s .; ki3u trD .` U2c :nh. *h$ng ta cK th3 Kng
gKi Lht c4 ChFng th4c thIch hGC n;o .;o trong &et i tGng V !uV`n. Trong ng>n ng?
* .; nh?ng ng>n ng? kh2cv ch$ng ta cK th3 7;& Gc i`u n;V LYng c2ch sE 56ng con trQ
h;& {function Coint'r} .; con trQ #n h;& th;nh .i9n. "h>ng ging nh con trQ h;& nh
trong **v V !uV`n 7; hng i tGngv ki3u 5? 7i/u an to;n {tVC'isaf'} .; LDo &St.
Met i`u th$ .: .; h?u 56ng ca V !uV`n 7; nK kh>ng cmn Li#t .; cng kh>ng !uan tP&
#n nh?ng 7C i tGng &; nK tha& chi#u ti. ^i`u cmn !uan tP& #n nh?ng i tGng K 7;
c2c i &6c ca ChFng th4c .; ki3u trD .` ChDi Cho hGC .i i tGng V !uV`n khai L2o.
^3 tBo &et V !uV`n ta 5ong tJ khKa '[)[g6t[ th'o sau 7; ki3u trD .` t9n ChFng th4c
Gc V !uV`n .; c2c i &6c cmn thi#tu
public delegate int WhichIsFirst(object obj1, object obj2);
"hai L2o tr9n :nh nghda &et V !uV`n t9n 7; WhichIsFirstv nK sH Kng gKi Lht c4 ChFng
th4c n;o 7hV hai tha& s ki3u object .; trD .` gi2 tr: int.
Met khi &; V !uV`n Gc :nh nghdav ch$ng ta cK th3 Kng gKi &et ChFng th4c th;nh
.i9n LYng .i/c tBo &et th3 hi/n ca V !uV`n n;Vv truV`n .;o trong &et ChFng th4c cK khai
L2o ki3u trD .` .; c2c i &6c cmn thi#t.
L;> tu TJ Chmn n;V .` sau ch$ng ta !uV c cK th3 sE 56ng !ua 7Bi gi?a hai tJ u !uV`n
.; 5'7'gat' .i nhau.
S> 23ng dL quLCn 0 U/c nhTn -h?ng th1c ,c thVc thi
rV !uV`n nh ch$ng ta z Li#t 7; Gc 5ong 3 U2c :nh nh?ng 7oBi ChFng th4c cK th3
Gc 5ong 3 UE 7] c2c sW ki/n .; 3 thWc hi/n ca77Lack trong chFng trnh 4ng 56ng. *h$ng
C<Ch'=y>1yn!?&i4n
)0-
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
cng cK th3 Gc sE 56ng 3 U2c :nh c2c ChFng th4c tdnh .; c2c instanc' ca ChFng th4c
&; ch$ng ta kh>ng Li#t trc cho #n khi chFng trnh thWc hi/n.
ZiD sE &inh hOa nh sauv ch$ng ta &un tBo &et 7C ch4a Fn giDn gOi 7; Pair 7C n;V
7u gi? .; s_C U#C hai i tGng Gc truV`n .;o cho ch$ng. TB& thi 7$c n;V ch$ng ta cng
kh>ng th3 Li#t 7oBi i tGng &; &et Pair 7u gi?. Nhng LYng c2ch tBo ra c2c ChFng th4c
L9n trong c2c i tGng n;V thWc hi/n .i/c s_C U#C .; Gc V !uV`nv ch$ng ta cK th3 V
!uV`n thWc hi/n .i/c s_C th4 tW cho chInh LDn thPn ca i tGng K.
Nh?ng i tGng kh2c nhau th sH s_C U#C kh2c nhau. I 56v &et Pair ch4a c2c i tGng
#& cK th3 Gc s_C U#C th'o th4 tW sv trong khi K &et Pair n$t 7/nh button cK th3 Gc
s_C th'o th4 tW a7ChaL' t9n ca ch$ng. Mong &un ca ngi tBo ra 7C Pair 7; nh?ng i
tGng L9n trong ca Pair ChDi cK tr2ch nhi/& cho Li#t th4 tW ca ch$ng c2i n;o 7; th4 tW mu
ti9n .; th4 hai. ^3 7;& Gc i`u n;Vv ch$ng ta ChDi D& LDo rYng c2c i tGng L9n trong
Pair ChDi cung chC &et ChFng th4c chb ra cho ch$ng ta Li#t c2ch s_C U#C c2c i tGng.
*h$ng ta :nh nghda ChFng th4c V9u cmu LYng .i/c tBo &et V !uV`nv V !uV`n n;V :nh
nghda k] Ch2C .; ki3u trD .` ca ChFng th4c i tGng {nh button} 3 cung chC .; cho
ChgC Pair U2c :nh i tGng n;o #n trc mu ti9n .; i tGng n;o 7; th4 hai.
+C Pair :nh nghda &et V !uV`nv WhichIsFirst. 1hFng th4c Sort sH 7hV &et tha& s 7;
th3 hi/n ca WhichIsFirst. "hi &et i tGng Pair cmn Li#t th4 tW ca nh?ng i tGng L9n
trong ca nK th nK sH V9u cmu V !uV`n truV`n .;o hai i tGng ch4a trong nK nh 7; tha&
s. Tr2ch nhi/& ca .i/c U2c :nh th4 tW ca hai i tGng Gc trao cho ChFng th4c Kng
gKi Lfi V !uV`n.
^3 ki3& tra thWc hi/n cF ch# V !uV`nv ch$ng ta sH tBo ra hai 7Cv 7C Cat .; 7C
Student. [ai 7C n;V cK It i3& chung .i nhauv ngoBi trJ cD hai thWc thi nh?ng ChFng th4c
Gc Kng gKi Lfi WhichIsFirst. po .SV cD hai i tGng n;V cK th3 Gc 7u gi? L9n trong
ca i tGng Pair.
Trong chFng trnh thE nghi/& n;V ch$ng ta sH tBo ra hai i tGng Student .; hai i
tGng Cat .; 7u ch$ng .;o &\i &et i tGng Pair. Sau K ch$ng ta sH tBo nh?ng i tGng
V !uV`n 3 Kng gKi nh?ng ChFng th4c ca ch$ngv nh?ng ChFng th4c n;V ChDi Cho hGC
.i k] Ch2C .; ki3u trD .` ca V !uV`n. Sau cong ch$ng ta sH V9u cmu nh?ng i tGng Pair
n;V s_C U#C nh?ng i tGng Student .; Catv ta 7;& tJng Lc nh sauu
8_t mu LYng .i/c tBo ChFng th4c khfi 5Wng Pair 7hV hai i tGng .; a ch$ng .;o
trong tJng &Dng ri9ngu
public class Pair
{
// da vo 2 di tong theo th tu
public Pair( object firstObjectr, object secondObject)
{
thePair[0] = firstObject;
C<Ch'=y>1yn!?&i4n
)00
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
thePair[1] = secondObject;
}
// bin lu gi hai di tong
private object[] thePair = new object[2];
}
Ti#C th'o 7; ch$ng ta Ch !uV#t ChFng th4c ToString() 3 ch4a gi2 tr: &i ca hai i
tGng &; Pair n_& gi?u
public override string ToString()
{
// xut th tu di tong th nht trc di tong th hai
return thePair[0].ToString() +, + thePair[1].ToString();
}
8PV gi th ch$ng ta z cK hai i tGng L9n trong ca Pair .; ch$ng ta cK th3 Uuht gi2 tr:
ca ch$ng ra &;n hnh. Ti#C t6c 7; ch$ng ta sH thWc hi/n .i/c s_C U#C .; in k#t !uD s_C U#C.
[i/n tBi th kh>ng U2c :nh Gc 7oBi i tGng &; ch$ng ta cKv 5o K ch$ng ta sH V !uV`n
!uV#t :nh th4 tW s_C U#C cho chInh LDn thPn c2c i tGng &; Pair 7u gi? L9n trong. po
.SVv ch$ng ta V9u cmu rYng &\i i tGng Gc 7u gi? L9n trong Pair thWc hi/n .i/c ki3& tra
U'& i tGng n;o s_C trc. 1hFng th4c n;V 7hV hai tha& s i tGng .; trD .` gi2 tr: ki3u
7i/t k9u theFirstComeFirst n#u i tGng mu ti9n Gc #n trc .; theSecondComeFirst
n#u gi2 tr: th4 hai #n trc.
Nh?ng ChFng th4c V9u cmu sH Gc Kng gKi Lfi V !uV`n WhichIsFirst Gc :nh nghda
L9n trong 7C Pairu
public delegate comparison
WhichIsFirst( object obj1, object obj2);
Zi2 tr: trD .` 7; ki3u comparison PV 7; ki3u 7i/t k9u
public enum comparison
{
theFirstComesFirst = 1,
theSecondComesFirst = 2
}
8ht c4 ChFng th4c tdnh n;o 7hV hai tha& s i tGng object .; trD .` ki3u comparison
cK th3 Gc Kng gKi Lfi V !uV`n .;o 7$c thWc thi.
+$c n;V ch$ng ta :nh nghda ChFng th4c Sort cho 7C Pairu
public void Sort( WhichIsFirst theDelegateFunc)
{
if (theDelegateFunc(thePair[0], thePair[1]) ==
comparison.theSecondComeFirst)
{
C<Ch'=y>1yn!?&i4n
)0=
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
object temp = thePair[0];
thePair[0] = thePair[1];
thePair[1] = temp;
}
}
1hFng th4c n;V 7hV &et tha& su &et V !uV`n cK ki3u WhichIsFirst .i t9n 7;
theDelegateFunc. 1hFng th4c Sort giao ChK tr2ch nhi/& !uV#t :nh th4 tW #n trc sau
ca hai i tGng L9n trong Pair #n ChFng th4c Gc Kng gKi Lfi V !uV`n. 89n trong
thPn ca Sortv ChFng th4c V !uV`n Gc gOi .; trD .` &et gi2 tr:v gi2 tr: n;V 7; &et trong
hai gi2 tr: 7i/t k9 ca comparison.
N#u gi2 tr: trD .` 7; theSecondComesFirstv i tGng L9n trong ca Pair sH Gc ho2n i
.: trIv trng hGC ngGc 7Bi th kh>ng 7;& g cD.
[zV tfng tGng ch$ng ta ang s_C U#C nh?ng Student th'o t9n. *h$ng ta .i#t &et
ChFng th4c trD .` theFirstComesFirst n#u t9n ca sinh .i9n mu ti9n #n trc .; the-
SecondComesFirst n#u t9n ca sinh .i9n th4 hai #n trc. N#u ch$ng ta a .;o 7; sAmy,
Betht th ChFng th4c trD .` k#t !uD 7; theFirstComesFirst. ; ngGc 7Bi n#u ch$ng ta truV`n
sBeth, Amyt th k#t !uD trD .` 7; theSecondComesFirst. "hi ch$ng ta nhSn Gc k#t !uD
theSecondComesFirstv ChFng th4c Sort sH Do hai i tGng n;V trong &Dngv .; thi#t 7SC 7;
Amy f .: trI mu cn Beth f .: trI th4 hai.
Ti#C th'o ch$ng ta sH th9& &et ChFng th4c ReverseSortv ChFng th4c n;V at c2c &6c
trong &Dng th'o th4 tW Do ngGc 7Biu
public void ReverseSort( WhichIsFirst theDeleagteFunc)
{
if ( theDelegateFunc( thePair[0], thePair[1]) ==
comparison.theFirstComesFirst)
{
object temp = thePair[0];
thePair[0] = thePair[1];
thePair[1] = temp;
}
}
i/c thWc hi/n cng tFng tW nh ChFng th4c Sort. TuV nhi9nv ChFng th4c thWc hi/n
.i/c ho2n i n#u ChFng th4c V !uV`n U2c :nh 7; i tGng trc ti trc. po .SVv k#t
!uD thWc hi/n ca ChFng th4c 7; i tGng th4 hai sH #n trc. +$c n;V n#u ch$ng ta truV`n
.;o 7; sAmy, Bethtv ChFng th4c V !uV`n sH trD .` theFirstComesFirstv .; ChFng th4c
ReverseSort sH ho2n i .: trI ca hai i tGng n;Vv thi#t 7SC Beth #n trc. ^i`u n;V cho
ChgC ch$ng ta sE 56ng cong ChFng th4c V !uV`n tFng tW nh Sortv &; kh>ng cmn V9u cmu
i tGng h\ trG ChFng th4c trD .` gi2 tr: Gc s_C ngGc.
C<Ch'=y>1yn!?&i4n
)0A
NgnNgLpTrnhC#
+$c n;V i`u cmn thi#t 7; ch$ng ta tBo ra .;i i tGng 3 s_C U#C. Ta tBo hai 7C i
tGng Fn giDn nh sauu 7C i tGng Student .; 7C i tGng Cat. Z2n cho i tGng
Student &et t9n .;o 7$c tBou
public class Student
{
public Student (string name)
{
this.name = name;
}
}
+C i tGng Student n;V V9u cmu hai ChFng th4cv &et 7; ChFng th4c Ch !uV#t ToString
()v .; &et ChFng th4c kh2c Gc Kng gKi nh 7; ChFng th4c V !uV`n.
+C Student ChDi Ch !uV#t ChFng th4c ToString() 3 cho ChFng th4c ToString() ca 7C
Pair sE 56ng &et c2ch chInh U2c. i/c thWc thi n;V th kh>ng cK g Ch4c tBC &; chb Fn thumn
7; trD .` t9n ca sinh .i9nu
public override string ToString()
{
return name;
}
Student cng ChDi thWc thi &et ChFng th4c h\ trG cho Pair.Sort() cK th3 V !uV`n U2c :nh
th4 tW ca hai i tGng U'& i tGng n;o #n trcu
public static comparison WhichStudentComesFirst(Object o1, Object o2)
{
Student s1 = (Student) o1;
Student s2 = (Student) o2;
return ( String.Compare( s1.name, s2.name) <0 ?
comparison.theFirstComesFirst :
comparison.theSecondComesFirst);
}
String.Compare 7; ChFng th4c ca .NET trong 7C Stringv ChFng th4c n;V so s2nh hai
chu\i .; trD .` &et gi2 tr: nhQ hFn 0 n#u chu\i mu ti9n nhQ hFn chu\i th4 hai .; 7n hFn 0
n#u chu\i th4 hai nhQ hFnv .; gi2 tr: 7; 0 n#u hai chu\i LYng nhau. 1hFng th4c n;V cng z
Gc trnh L;V trong chFng 10 .` chu\i. Th'o 7] 7uSn tr9n th gi2 tr: trD .` 7;
theFirstComesFirst chb khi chu\i th4 nhht nhQ hFnv n#u hai chu\i LYng nhau haV chu\i th4
hai 7n hFnv th ChFng th4c n;V sH trD .` cong gi2 tr: 7; theSecondComesFirst.
Zhi ch$ rYng ChFng th4c WhichStudentComesFirst 7hV hai tha& s ki3u i tGng .; trD .`
gi2 tr: ki3u 7i/t k9 comparison. ^i`u n;V 3 7;& tFng 4ng .; Cho hGC .i ChFng th4c Gc
V !uV`n Pair.WhichIsFirst.
C<Ch'=y>1yn!?&i4n
)0T
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
+C th4 hai 7; Catv 3 Ch6c .6 cho &6c Ich ca ch$ng tav th Cat sH Gc s_C U#C th'o trOng
7Gngv nh #n trc nang. Ta cK khai L2o 7C Cat nh sauu
public class Cat
{
public Cat( int weight)
{
this.weight = weight;
}
// sp theo trng long
public static comparison WhichCatComesFirst(Object o1, Object o2)
{
Cat c1 = (Cat) o1;
Cat c2 = (Cat) o2;
return c1.weight > c2.weight ?
theSecondComesFirst :
theFirstComesFirst;
}
public override string ToString()
{
return weight.ToString();
}
// bin lu gi trng long
private int weight;
}
*ng tFng tW nh 7C Student th 7C Cat cng Ch !uV#t ChFng th4c ToString() .; thWc
thi &et ChFng th4c tdnh .i c$ Ch2C tFng 4ng .i ChFng th4c V !uV`n. ; ch$ng ta cng
7u ] 7; ChFng th4c V !uV`n ca Student .; Cat 7; kh>ng cong t9n .i nhau. *h$ng ta
kh>ng cmn thi#t ChDi 7;& cong t9n . ch$ng ta sH g2n #n ChFng th4c V !uV`n 7$c thWc thi.
I 56 &inh hOa 11.1 sau trnh L;V c2ch &et ChFng th4c V !uV`n Gc gOi.
89 d: 11(1) L-m NiI+ Noi 7y A>yDn(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
namespace ProgrammingCSharp
{
using System;
// khai bo kiu lit k
public enum comparison
{
theFirstComesFirst =1,
C<Ch'=y>1yn!?&i4n
)10
NgnNgLpTrnhC#
theSecondComesFirst = 2
}
// lp Pair don gin lu gi 2 di tong
public class Pair
{
// khai bo y quyn
public delegate comparison WhichIsFirst( object obj1, object obj2);
// truyn hai di tong vo b khi dung
public Pair( object firstObject, object secondObject)
{
thePair[0] = firstObject;
thePair[1] = secondObject;
}
// phong thc sp xp th tu ca hai di tong
// theo bt c tiu chun no ca di tong
public void Sort( WhichIsFirst theDelegateFunc)
{
if (theDelegateFunc(thePair[0], thePair[1]) ==
comparison.theSecondComesFirst)
{
object temp = thePair[0];
thePair[0] = thePair[1];
thePair[1] = temp;
}
}
// phong thc sp xp hai di tong theo
// th tu nghich do lai tiu chun sp xp
public void ReverseSort( WhichIsFirst theDelegateFunc)
{
if (theDelegateFunc( thePair[0], thePair[1]) ==
comparison.theFirstComesFirst)
{
object temp = thePair[0];
thePair[0] = thePair[1];
thePair[1] = temp;
}
}
// yu cu hai di tong da ra gi tri ca n
C<Ch'=y>1yn!?&i4n
)11
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
public override string ToString()
{
return thePair[0].ToString() + ", + thePair[1].ToString();
}
// mng lu 2 di tong
private object[] thePair = new object[2];
}
//lp di tong Cat
public class Cat
{
public Cat(int weight)
{
this.weight = weight;
}
// sp theo th tu trng long
public static comparison WhichCatComesFirst(Object o1, Object o2)
{
Cat c1 = (Cat) o1;
Cat c2 = (Cat) o2;
return c1.weight > c2.weight ?
comparison.theSecondComesFirst :
comparison.theFirstComesFirst;
}
public override string ToString()
{
return weight.ToString();
}
// bin lu trng long
private int weight;
}
// khai bo lp Student
public class Student
{
public Student( string name)
{
this.name = name;
}
// sp theo th tu ch ci
C<Ch'=y>1yn!?&i4n
)12
NgnNgLpTrnhC#
public static comparison WhichStudentComesFirst( Object o1, Object o2)
{
Student s1 = (Student) o1;
Student s2 = (Student) o2;
return (String.Compare( s1.name, s2.name) <0 ?
comparison.theFirstComesFirst :
comparison.theSecondComesFirst);
}
public override string ToString()
{
return name;
}
// bin lu tn
private string name;
}
public class Test
{
public static void Main()
{
// tao ra hai di tong Student v Cat
// da chng vo hai di tong Pair
Student Thao = new Student("Thao);
Student Ba = new Student("Ba);
Cat Mun = new Cat(5);
Cat Ngao = new Cat(2);
Pair studentPair = new Pair(Thao, Ba);
Pair catPair = new Pair(Mun, Ngao);
Console.WriteLine("Sinh vien \t\t\t: {0}, studentPair.ToString());
Console.WriteLine("Meo \t\t\t: {0}, catPair.ToString());
// tao y quyn
Pair.WhichIsFirst theStudentDelegate = new
Pair.WhichIsFirst( Student.WhichStudentComesFirst);
Pair.WhichIsFirst theCatDelegate = new
Pair.WhichIsFirst( Cat.WhichCatComesFirst);
// sp xp dng y quyn
studentPair.Sort( theStudentDelegate);
Console.WriteLine("Sau khi sap xep studentPair\t\t:{0},
studentPair.ToString());
C<Ch'=y>1yn!?&i4n
)1)
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
studentPair.ReverseSort(theStudentDelegate);
Console.WriteLine("Sau khi sap xep nguoc studentPair\t\t:{0},
studentPair.ToString());
catPair.Sort( theCatDelegate);
Console.WriteLine("Sau khi sap xep catPair\t\t:{0},
catPair.ToString());
catPair.ReverseSort(theCatDelegate);
Console.WriteLine("Sau khi sap xep nguoc catPair\t\t:{0},
catPair.ToString());
}
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
Sinh $ien : hao% 3a
Meo : 5% )
Sau khi sa& (e& studentEair : 3a% hao
Sau khi sa& (e& nguoc studentEair : hao% 3a
Sau khi sa& (e& catEair : )% 5
Sau khi sa& (e& nguoc catEair : 5% )
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Trong oBn chFng trnh thE nghi/& tr9n ch$ng ta tBo ra hai i tGng Student .; hai i
tGng Cat sau K a ch$ng .;o hai i tGng ch4a Pair th'o tJng 7oBi. 8e khfi 5Wng ca 7C
Student 7hV &et chu\i Bi 5i/n cho t9n ca sinh .i9n .; Le khfi 5Wng ca 7C Cat th 7hV &et
s int Bi 5i/n cho trOng 7Gng ca &o.
Student Thao = new Student("Thao);
Student Ba = new Student("Ba);
Cat Mun = new Cat("5);
Cat Ngao = new Cat("2);
Pair studentPair = new Pair(Thao, Ba);
Pair catPair = new Pair(Mun, Ngao);
Console.WriteLine("Sinh vien \t\t\t: {0}, studentPair.ToString());
Console.WriteLine("Meo \t\t\t: {0}, catPair.ToString());
Sau K chFng trnh in nei 5ung ch4a L9n trong ca hai i tGng ch4a Pairv .; ch$ng ta cK
th3 thhV th4 tW nh sauu
Sinh vien : Thao, Ba
Meo : 5, 2
C<Ch'=y>1yn!?&i4n
)1N
NgnNgLpTrnhC#
Th4 tW Uuht hi/n ca nK chInh 7; th4 tW a .;o. Ti#C th'o ch$ng ta khfi tBo hai i tGng V
!uV`nu
Pair.WhichIsFirst theStudentDelegate = new
Pair.WhichIsFirst( Student.WhichStudentComesFirst);
Pair.WhichIsFirst theCatDelegate = new
Pair.WhichIsFirst( Student.WhichCatComesFirst);
rV !uV`n mu ti9n theStudentDelegate Gc tBo ra LYng c2ch truV`n .;o &et ChFng th4c
tdnh tFng 4ng ca 7C Student. ^i tGng V !uV`n th4 haiv theCatDelegate Gc &et
ChFng th4c tdnh ca 7C Cat.
8PV gi ta z cK c2c i tGng V !uV`nv ch$ng ta truV`n V !uV`n mu ti9n cho ChFng th4c
Sort ca i tGng Pairv .; sau K 7; ChFng th4c ReverseSort. "#t !uD Gc Uuht ra &;n
hnhu
Sau khi sap xep studentPair : Ba, Thao
Sau khi sap xep nguoc studentPair : Thao, Ba
Sau khi sap xep catPair : 2, 5
Sau khi sap xep nguoc catPair : 5, 2
rL quLCn tcnh
Nh ch$ng ta z thhV trong .I 56 &inh hoB 11.1 trc th hai th3 hi/n ChFng th4c V
!uV`n Gc khai L2o L9n trong 7C gOi {chInh U2c 7; trong h;& Main ca Test}. ^i`u n;V cK
th3 kh>ng cmn thi#t ta cK th3 sE 56ng khai L2o V !uV`n tdnh tJ hai 7C Student .; Cat. po
.SV ta cK th3 L sung 7C Student LYng c2ch th9& .;ou
public static readonly Pair.WhichIsFirst OrderStudents =
new Pair.WhichIsFirst(Student.WhichStudentComesFirst);
nghda ca 7/nh tr9n 7; tBo &et V !uV`n tdnh t9n 7; OrderStudents .; cK thuec tInh chb Oc
readonl%. i/c th9& .;o thuec tInh readonl% 3 ghi ch$ rYng &et khi trng z Gc tBo ra
th kh>ng Gc L sung sau K.
TFng tW nh .SV ch$ng ta cK th3 tBo V !uV`n tdnh cho Cat nh sauu
public static readonly Pair.WhichIsFirst OderCats =
new Pair.WhichIsFirst( Cat.WhichCatComesFirst);
8PV gi th z cK hai trng tdnh hi/n 5i/n L9n trong c2c 7C Student .; Catv &\i c2i sH g_n
.i ChFng th4c tFng 4ng L9n trong 7C. Sau K ch$ng ta cK th3 thWc hi/n V !uV`n &;
kh>ng cmn khai L2o th3 hi/n V !uV`n c6c Le. i/c chuV3n V !uV`n Gc thWc hi/n trong
7/nh in S& nh sauu
studentPair.Sort( theStudentDelegate);
Console.WriteLine("Sau khi sap xep studentPair\t\t:{0}, studentPair.ToString());
student+air,-everse$ort.$tudent,/rder$tudents01
Console.WriteLine("Sau khi sap xep nguoc studentPair\t\t:{0},
C<Ch'=y>1yn!?&i4n
)1-
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
studentPair.ToString());
catPair.Sort( theCatDelegate);
Console.WriteLine("Sau khi sap xep catPair\t\t:{0}, catPair.ToString());
cat+air,-everse$ort.Cat,/rderCats01
Console.WriteLine("Sau khi sap xep nguoc catPair\t\t:{0}, catPair.ToString());
"#t !uD thWc hi/n tFng tW nh trong .I 56 11.1
S> 23ng dL quLCn nh thuHc tEnh
^i .i V !uV`n tdnh th ch$ng L_t Luec ChDi Gc tBo th3 hi/nv 5o tInh chht tdnhv &;
kh>ng cmn Li#t 7; ch$ng cK Gc sE 56ng haV kh>ngv nh 7C Student .; Cat trong .I 56 L9n
tr9n. *h$ng ta cK th3 Ch2t tri3n nh?ng 7C n;V tt hFn LYng c2ch thaV th# V !uV`n tdnh tJ
trng th;nh thuec tInh.
i 7C Student ta cK th3 chuV3n khai L2ou
public static readonly Pair.WhichIsFirst OrderStudent =
new Pair.WhichIsFirst( Student.WhichStudentComesFirst);
th;nh khai L2o nh sauu
public static Pair.WhichIsFirst OrderStudents
{
get
{
return new Pair.WhichIsFirst( WhichStudentComesFirst);
}
}
TFng tW nh .SV ch$ng ta thWc hi/n thaV th# .i 7C Catu
public static Pair.WhichIsFirst OderCats
{
get
{
return new Pair.WhichIsFirst( WhichCatComesFirst);
}
}
"hi truV`n cho ChFng th4c th kh>ng thaV iu
studentPair.Sort( Student.OderStudents);
catPair.Sort( Cat.OrderCats);
"hi thuec tInh OrderStudents Gc truV cSC th V !uV`n Gc tBo rau
return new Pair.WhichIsFirst( WhichCatComesFirst);
C<Ch'=y>1yn!?&i4n
)10
NgnNgLpTrnhC#
^i`u !uan trOng f PV 7; V !uV`n sH kh>ng Gc tBo cho #n khi n;o nK Gc V9u cmu. i/c
n;V cho ChgC 7C gOi {nh 7C Test} !uV#t :nh khi n;o cmn thi#t sE 56ng &et V !uV`n
nhng .cn cho ChgC .i/c tBo V !uV`n 7; tr2ch nhi/& ca 7C Student haV 7C Cat.
Thit ,T- th1 tV thi h7nh *i "=ng dL quLCn
rV !uV`n cK th3 gi$C ch$ng ta tBo ra &et h/ thng trong K ngi sE 56ng cK th3 !uV#t
:nh #n th4 tW ca c2c hoBt eng khi thWc thi. ZiD sE ch$ng ta cK &et h/ thng UE 7] Dnh
trong K c2c Dnh cK th3 Gc thao t2c Lfi &et ChFng Ch2C Gc :nh nghda tt nh 7;u 7;&
&v 7;& S&v UoaVv 7Oc Dnhv... ZiD sE rYngv th4 tW khi sE 56ng c2c hi/u 4ng n;V Gc 2C 56ng
cho Dnh 7; !uan trOng. Ngi sE 56ng &un 7Wa chOn nh?ng hi/u 4ng n;V tJ &'nuv anh ta
chOn tht cD c2c hi/u 4ng toV thIchv .; sau K V9u cmu Le U4 7] Dnh thWc hi/n 7mn 7Gt c2c hi/u
4ng &; anh ta z U2c :nh.
*h$ng ta cK th3 tBo nh?ng V !uV`n cho &\i hoBt eng .; sau K th9& ch$ng .;o &et tSC
hGC Gc s_Cv nh 7; &et &Dng chng hBnv th'o &et th4 tW &; ta &un ch$ng thWc thi. Met
khi tht cD c2c V !uV`n Gc tBo ra .; a .;o tSC hGCv ch$ng ta 5 5;ng 7aC 7mn 7Gt !ua c2c
th;nh Chmn ca &Dngv .; thWc thi 7mn 7Gt tJng ChFng th4c V !uV`n.
*h$ng ta L_t mu LYng .i/c UPV 5Wng &et 7C Image th3 hi/n &et Dnh sH Gc UE 7] Lfi 7C
ImageProcessoru
public class Image
{
public Image()
{
Console.WriteLine("An image created);
}
}
*h$ng ta cK th3 tfng tGng rYng .i/c Uuht ra chu\i nh .SV tFng 4ng .i .i/c tBo &et
Dnh .gif haV .kC'g haV Bi 7oBi nh .SV.
Sau K 7C ImageProcessor khai L2o &et V !uV`n. pd nhi9n 7; ch$ng ta cK th3 :nh nghda
&et V !uV`n ri9ng trD .` Lht c4 ki3u 5? 7i/u n;o haV 7hV Lht c4 tha& s n;o &; ch$ng ta
&un. Trong .I 56 n;V ch$ng ta :nh nghda &et V !uV`n cK th3 Kng gKi Lht c4 ChFng th4c
kh>ng cK gi2 tr: trD .` .; cng kh>ng nhSn Lht c4 tha& s n;o h#tu
public delegate void DoEffect();
Ti#C t6c 7C ImageProcessor khai L2o &et s> ChFng th4cv .; tJng ChFng th4c n;V Cho
hGC .i k] Ch2C .; ki3u trD .` Gc khai L2o Lfi V !uV`nu
public static void Blur()
{
Console.WriteLine("Blurring image);
}
C<Ch'=y>1yn!?&i4n
)1=
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
public static void Filter()
{
Console.WriteLine("Filtering image);
}
public static void Sharpen()
{
Console.WriteLine("Sharpening image);
}
public static void Rotate()
{
Console.WriteLine("Rotating image);
}
+C ImageProcessor cmn thi#t cK &et &Dng 3 7u gi? c2c V !uV`n &; ngi sE 56ng chOnv
&et Li#n 7u gi? s hi/u 4ng Gc chOn .; 5d nhi9n 7; cK &et Li#n Dnh 3 UE 7]u
DoEffect[] arrayOfEffects;
Image image;
int numEffectsRegistered = 0;
ImageProcessor cng cmn &et ChFng th4c 3 th9& c2c V !uV`n .;o trong &Dngu
public void AddToEffects( DoEffect theEffect)
{
if (numEffectsRegistered >=0)
{
throw new Exception("Too many members in array);
}
arrayOfEffects[numEffectsRegistered ++] = theEffect;
}
Ngo;i ra cn cmn &et ChFng th4c thSt sW gOi c2c V !uV`n n;Vu
public void ProcessImage()
{
for (int i = 0; i < numEffectsRegistered; i++)
{
arrayOfEffects[i]();
}
}
*ui congv ch$ng ta khai L2o nh?ng V !uV`n tdnhv 3 c2c c7i'nt gOiv .; chan ch$ng 7Bi 3 UE
7] nh?ng ChFng th4cu
public DoEffect BlurEffect = new DoEffect(Blur);
public DoEffect SharpenEffect = new DoEffect(Sharpen);
C<Ch'=y>1yn!?&i4n
)1A
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
public DoEffect FilterEffect = new DoEffect(Filter);
public DoEffect RotateEffect = new DoEffect(Rotate);
i/c chOn c2c thao t2c 5in ra trong !u2 trnh tFng t2c f th;nh Chmn giao 5i/n ngi sE
56ng. Trong .I 56 n;V ch$ng ta &> ChQng LYng c2ch chOn c2c hi/u 4ngv th9& ch$ng .;o
trong &Dngv .; 1roc'ssImage.
89 d: minh hBa 11(2) Sn d:ng m*ng 7y A>yDn(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
namespace ProgrammingCSharp
{
using System;
// khai bo lp nh
public class Image
{
public Image()
{
Console.WriteLine("An image created);
}
}
// lp x l nh
public class ImageProcessor
{
// khai bo y quyn
public delegate void DoEffect();
// tao cc y quyn tnh
public DoEffect BlurEffect = new DoEffect(Blur);
public DoEffect SharpenEffect = new DoEffect(Sharpen);
public DoEffect FilterEffect = new DoEffect(Filter);
public DoEffect RotateEffect = new DoEffect(Rotate);
// b khi dung khi tao nh v mng
public ImageProcessor(Image image)
{
this.image = image;
arrayOfEffects = new DoEffect[10];
}
// thm hiu ng vo trong mng
public void AddToEffects( DoEffect theEffect)
{
if (numEffectsRegistered >=0)
C<Ch'=y>1yn!?&i4n
)1T
NgnNgLpTrnhC#
{
throw new Exception("Too many members in array);
}
arrayOfEffects[numEffectsRegistered ++] = theEffect;
}
// cc phong thc x l nh
public static void Blur()
{
Console.WriteLine("Blurring image);
}
public static void Filter()
{
Console.WriteLine("Filtering image);
}
public static void Sharpen()
{
Console.WriteLine("Sharpening image);
}
public static void Rotate()
{
Console.WriteLine("Rotating image);
}
// gi cc y quyn d thuc hin hiu ng
public void ProcessImage()
{
for (int i = 0; i < numEffectsRegistered; i++)
{
arrayOfEffects[i]();
}
}
// bin thnh vin
private DoEffect[] arrayOfEffects;
private Image image;
private int numEffectsRegistered = 0;
}
// lp Test d kim chng chong trnh
public class Test
{
C<Ch'=y>1yn!?&i4n
)20
NgnNgLpTrnhC#
public static void Main()
{
Image theImage = new Image();
// do khng c GUI d thuc hin chng ta s chn ln
// lot cc hnh dng v thuc hin
ImageProcessor theProc = new ImageProcessor(theImage);
theProc.AddToEffects(theProc.BlurEffect);
theProc.AddToEffects(theProc.FilterEffect);
theProc.AddToEffects(theProc.RotateEffect);
theProc.AddToEffects(theProc.SharpenEffect);
theProc.ProcessImage();
}
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
Bn i#age created
3!urring i#age
-i!tering i#age
<otate i#age
Shar&ening i#age
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Trong .I 56 tr9nv i tGng ImageProcessor Gc tBo ra .; nh?ng hi/u 4ng Gc th9& .;o.
N#u ngi 5ong chOn 7;& & trc khi 7Oc Dnhv th Fn giDn 7; Gc a .;o &Dng V !uV`n
th'o th4 tW tFng 4ng. TFng tW nh .SVv Lht c4 h;nh eng 7Wa chOn n;o ca ngi 5ong
&ong &unv ta a th9& nhi`u V !uV`n .;o trong tSC hGC.
*h$ng ta cK th3 tfng tGng .i/c hi3n th: th4 tW h;nh eng n;V trong &et 5anh s2ch listbox
.; cho ChgC ngi sE 56ng s_C U#C 7Bi ChFng th4cv 5i chuV3n ch$ng 79n Uung trong 5anh
s2ch. "hi c2c h;nh eng n;V Gc s_C U#C 7Bi th ch$ng ta chb cmn thaV i th4 tW trong tSC
hGC. Ngo;i ra ta cng cK th3 a c2c hoBt eng n;V .;o trong cF sf 5? 7i/u ri sau K Oc
ch$ng 7$c thWc hi/n.
rV !uV`n 5 5;ng cung chC eng cho ta c2c ChFng th4c Gc gOi th'o &et th4 tW U2c :nh
Mu,ticasting
*F ch# &u7ticasting cho ChgC gOi hai ChFng th4c thWc thi th>ng !ua &et V !uV`n Fn.
^i`u n;V trf n9n !uan trOng khi UE 7] c2c sW ki/nv sH Gc thDo 7uSn trong Chmn cui ca
chFng.
C<Ch'=y>1yn!?&i4n
)21
NgnNgLpTrnhC#
M6c Ich chInh 7; cK &et V !uV`n cK th3 gOi thWc hi/n nhi`u hFn &et ChFng th4c. ^i`u
n;V ho;n to;n kh2c .i .i/c cK &et tSC hGC c2c V !uV`nv . &\i trong s ch$ng chb gOi Gc
5uV nhht &et ChFng th4c. Trong .I 56 trcv tSC hGC Gc sE 56ng 3 7u gi? c2c V !uV`n
kh2c nhau. TSC hGC n;V cng cK th3 th9& &et V !uV`n nhi`u hFn &et 7mnv .; sE 56ng tSC
hGC 3 s_C U#C 7Bi c2c V !uV`n .; i`u khi3n th4 tW h;nh eng Gc gOi.
i Mu7ticasting ch$ng ta cK th3 tBo &et V !uV`n Fn .; cho ChgC gOi nhi`u ChFng th4c
Gc Kng. I 56v khi &et n$t 7/nh Gc nhhn ch$ng ta cK th3 &un thWc hi/n nhi`u hFn &et
h;h eng. ^3 7;& Gc i`u n;V ch$ng ta cK th3 a cho button &et tSC hGC c2c V !uV`nv
nhng 3 s2ng r hFn .; 5 5;ng hFn 7; tBo &et V !uV`n Mu7ticast.
8ht c4 V !uV`n n;o trD .` gi2 tr: void 7; V !uV`n &u7ticastv &ac 5o .SV ta cK th3 i UE .i
nK nh 7; V !uV`n Lnh thng cng kh>ng sao. [ai V !uV`n Mu7ticast cK th3 Gc k#t hGC
.i nhau LYng ChgC to2n ceng {}. "#t !uD 7; &et V !uV`n Mu7ticast &i .; gOi #n tht cD
c2c ChFng th4c thWc thi nguV9n thV ca cD hai L9n. I 56v giD sE Writer .; Logger 7; V
!uV`n trD .` gi2 tr: voidv 5ng 7/nh th'o sau sH k#t hGC ch$ng 7Bi .i nhau .; tBo ra &et V
!uV`n Mu7ticast &iu
myMulticastDelegate = Writer + Logger;
*h$ng ta cng cK th3 th9& nh?ng V !uV`n .;o trong V !uV`n Mu7ticast LYng to2n tE ceng
LYng {}. 1hgC to2n n;V sH th9& V !uV`n f ChIa L9n ChDi ca to2n tE .;o V !uV`n
Mu7ticast f L9n tr2i. I 56 &inh hOa nh sauv giD sE cK Transmitter .; myMulticastDelegate
7; nh?ng V !uV`nv 7/nh ti#C th'o sau PV sH thWc hi/n .i/c th9& V !uV`n Transmitter .;o
trong myMulticastDelegateu
myMulticastDelegate += Transmitter;
^3 hi3u r V !uV`n Mu7ticast Gc tBo ra .; sE 56ngv ch$ng ta sH tJng Lc t& hi3u th>ng
!ua .I 56 11.) L9n 5iv trong .I 56 &inh hOa n;V ch$ng ta sH tBo ra &et 7C cK t9n gOi 7;
MyClassWithDelegate 7C n;V :nh nghda &et 5'7'gat'v 5'7'gat' n;V 7hV &et tha& s 7;
chu\i .; kh>ng cK gi2 tr: trD .`u
void delegate void StringDelegate( string s);
Sau K ch$ng ta :nh &et 7C gOi 7; MyImplementingClass 7C n;V cK La ChFng th4cv tht cD
c2c ChFng th4c n;V `u trD .` gi2 tr: void .; nhSn &et chu\i 7;& tha& su WriteStringv
LogStringv .; Transmitting. 1hFng th4c mu ti9n .i#t &et chu\i Uuht ra &;n hnh ti9u
chuMnv chu\i th4 hai &> ChQng .i#t .;o &et 7og fi7'v .; ChFng th4c th4 La &> ChQng .i/c
chuV3n &et chu\i !ua <nt'rn't. *h$ng ta tBo th3 hi/n 5'7'gat' 3 gOi nh?ng ChFng th4c
tFng 4ngu
Writer("String passed to Writer\n);
Logger("String passed to Logger\n);
Transmitter("String passed to Transmitter\n);
^3 U'& c2ch k#t hGC c2c 5'7'gat'v ch$ng ta tBo &et th3 hi/n 5'7'gat' kh2cu
MyClassWithDelegate.StringDelegate myMulticastDelegate;
C<Ch'=y>1yn!?&i4n
)22
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
.; g2n cho 5'7'gat' n;V k#t !uD ca ChgC ceng hai 5'7'gat' cho trcu
myMulticastDelegate = Writer + Logger;
Ti#C th'o ch$ng ta th9& .;o 5'7'gat' n;V &et 5'7'gat' n?a LYng c2ch sE 56ng to2n tE {}u
myMulticastDelegate += Transmitter;
*ui congv ch$ng ta thWc hi/n .i/c UKa 5'7'agat' LYng sE 56ng to2n tE {i}u
DelegateCollector -= Logger;
Sau PV 7; to;n Le .I 56 &inh hOa.
89 d: 11(F) ?@t hHp +,+ d'#'gat'.
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
namespace ProgrammingCSharp
{
using System;
public class MyClassWithDelegate
{
// khai bo delegate
public delegate void StringDelegate(string s);
}
public class MyImplementingClass
{
public static void WriteString( string s)
{
Console.WriteLine("Writing string {0}, s);
}
public static void LogString( string s)
{
Console.WriteLine("Logging string {0}, s);
}
public static void TransmitString( string s)
{
Console.WriteLine("Transmitting string {0}, s);
}
}
public class Test
{
public static void Main()
{
// dinh ngha 3 StringDelegate
MyClassWithDelegate.StringDelegate Writer, Logger, Transmitter;
C<Ch'=y>1yn!?&i4n
)2)
NgnNgLpTrnhC#
// dinh ngha mt StringDelegate khc thuc hin Multicasting
MyClassWithDelegate.StringDelegate myMulticastDelegate;
// tao th hin ca 3 delegate du tin v truyn vo phong thc thuc thi
Writer = new MyClassWithDelegate.StringDelegate(
MyImplementingClass.WriteString);
Logger = new MyClassWithDelegate.StringDelegate(
MyImplementingClass.LogString);
Transmitter = new MyClassWithDelegate.StringDelegate(
MyImplementingClass.TransmitString);
// gi phong thc delegate Writer
Writer("String passed to Writer\n);
// gi phong thc delegate Logger
Logger("String passed to Logger\n);
//gi phong thc delegate Transmitter
Transmitter("String passed to Transmitter\n);
// thng bo ngi dng rng d kt hop hai delegate vo
// trong mt multicast delegate
Console.WriteLine("myMulticastDelegate = Writer + Logger);
// kt hop hai delegate
myMulticastDelegate = Writer + Logger;
// gi phong thc delegate, hai phong thc s doc thuc hin
myMulticastDelegate("First string passed to Collector);
// bo vi ngi s dng rng d thm delegate th 3 vo
// trong Multicast delegate
Console.WriteLine("\nmyMulticastDeleagte += Transmitter);
// thm delegate th ba vo
myMulticastDelegate += Transmitter;
// gi thuc thi Multicast delegate, cng mt lc ba
// phong thc s cng doc gi thuc hin
myMulticastDelegate("Second string passed to Collector);
// bo vi ngi s dng rng xa delegate Logger
Console.WriteLine("\nmyMulticastDelegate -= Logger);
// xa delegate Logger
myMulticastDelegate -= Logger;
// gi lai delegate, lc ny ch cn thuc hin hai phong thc
myMulticastDelegate("Third string passed to Collector);
}// end Main
}// end class
C<Ch'=y>1yn!?&i4n
)2N
NgnNgLpTrnhC#
}// end namespace
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
>riting string String &assed to >riter
9ogging string String &assed to 9ogger
rans#itting string String &assed to rans#itter
#'Mu!ticastDe!egate = >riter N 9ogger
>riting string -irst string &assed to Co!!ector
9ogging string -irst string &assed to Co!!ector
#'Mu!ticastDe!egate N= rans#itter
>riting string Second string &assed to Co!!ector
9ogging string Second string &assed to Co!!ector
rans#itting string Second string &assed to Co!!ector
#'Mu!ticastDe!egate -= 9ogger
>riting string hird string &assed to Co!!ector
rans#itting string hird string &assed to Co!!ector
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Trong .I 56 tr9nv nh?ng th3 hi/n 5'7'gat' Gc :nh nghda .; La 5'7'gat' mu ti9n Writerv
Loggerv .; Transmitter Gc gOi ra. p'7'gat' th4 t myMulticastDelegate Gc g2n LYng
c2ch k#t hGC hai 5'7'gat' muv .; khi nK Gc gOiv th 5cn #n 7; cD hai 5'7'gat' cng Gc
gOi. "hi 5'7'gat' th4 La Gc th9& .;ov .; k#t !uD 7; khi myMulticastDelegate Gc gOi th
tht cD La ChFng th4c 5'7'gat' cng Gc thWc hi/n. *ui congv khi Logger Gc UKa khQi
5'7'gat'v .; khi myMulticastDelegate Gc gOi th chb cK hai ChFng th4c thWc thi.
Mu7ticast 5'7'gat' Gc th3 hi/n tt nhht trong .i/c 4ng 56ng UE 7] c2c sW ki/n. "hi &et sW
ki/n .I 56 nh &et n$t 7/nh Gc nhhnv th &et &u7ticast 5'7'gat' tFng 4ng sH gOi #n &et
7oBt c2c ChFng th4c UE 7] sW ki/n 3 2C 4ng 7Bi .i c2c sW ki/n n;V.
SV ki+n
Trong &>i trng giao 5i/n hOa {ZraChica7 ls'r <nt'rfac'su Zl<s}v ~in5o(s haV
trong trnh 5uV/t ('L i hQi c2c chFng trnh ChDi 2C 4ng c2c sW ki/n. Met sW ki/n cK th3
7; &et n$t 7/nh Gc nhhnv &et &6c trong &'nu Gc chOnv h;nh eng sao chgC tSC tin ho;n
th;nhv...[aV nKi ng_n gOn 7; &et h;nh eng n;o K UDV rav .; ta ChDi 2C 4ng 7Bi sW ki/n K.
*h$ng ta kh>ng th3 o2n trc Gc khi n;o th c2c sW ki/n sH Uuht hi/n. [/ thng sH ch
cho #n khi nhSn Gc sW ki/nv .; sH chuV3n .;o cho trnh UE 7] sW ki/n thWc hi/n.
Trong &>i trng giao 5i/n hOav Lht c4 th;nh Chmn n;o cng cK th3 a ra sW ki/n. I 56v
khi ch$ng ta kIch .;o &et n$t 7/nhv nK cK th3 a ra sW ki/n Click. "hi ch$ng ta th9& &et
&6c .;o 5anh s2chv nK sH a ra sW ki/n ListChanged.
C<Ch'=y>1yn!?&i4n
)2-
NgnNgLpTrnhC#
%? ch -uI,ishing *7 suIscriIing
Trong ng>n ng? *@v Lht c4 i tGng n;o cng cK th3 CuL7ish &et tSC hGC c2c sW ki/n 3
cho c2c 7C kh2c cK th3 qng k]. "hi &et 7C CuL7ish a ra &et sW ki/nv th tht cD c2c 7C z
qng k] sH Gc nhSn sW cDnh L2o.
2hi +h3u T2c giD Za&&a {y55ison ~'s7'Vv 1TT-} &> tD cF ch# n;V nh sauu sdMnh nghea
mYt =@n nhiD> sO ph: th>Y+ gia nhng =ci t;Hng do =6 1hi mYt =ci t;Hng thay =ki trLng
th,if tXt +* +,+ =ci t;Hng 1h,+ ph: th>Y+ N-o n6 s` =;H+ +*nh ,o N- +p nht mYt +,+h tO
=Yngt.
i cF ch# n;Vv i tGng ca ch$ng ta cK th3 nKi rYng s =Uy +6 nhng thP m- ti +6 thi
thng ,o +ho Lnt .; nh?ng 7C kh2c cK th3 qng k] 2C rYng s8Ungf hJy ,o +ho ti i@t
1hi +h>yIn =6 _*y rat. I 56v &et n$t 7/nh cK th3 cDnh L2o cho Lht c4 th;nh Chmn n;o khi nK
Gc nhhn. N$t 7/nh n;V Gc gOi 7; CuL7ish'r Lfi . nK ChPn Ch2t sW ki/n *7ick .; nh?ng
7C kh2c 7; c2c 7C suLscriL'r . ch$ng qng k] nhSn sW ki/n *7ick n;V.
SV ki+n *7 2#,#gat#
Nh?ng sW ki/n trong *@ Gc thWc thi .i nh?ng 5'7'gat'. +C CuL7ish'r :nh nghda &et
5'7'gat' .; nh?ng 7C suLscriL'r ChDi thWc thi. "hi &et sW ki/n Uuht hi/n th ChFng th4c
ca 7C suLscriL'r Gc gOi th>ng !ua 5'7'gat'.
Met ChFng th4c Gc 5ong 3 UE 7] c2c sW ki/n th Gc 7; trnh UE 7] sW ki/n {'.'nt
han57'r}. *h$ng ta cK th3 khai L2o trnh UE 7] sW ki/n n;V nh ch$ng ta z 7;& .i Lht c4
5'7'gat' kh2c.
Th'o !uV cv nh?ng trnh UE 7] sW ki/n trong .NET %ra&'(ork trD .` gi2 tr: void .; 7hV hai
tha& s. Tha& s mu ti9n 7; ngun 5cn #n sW ki/nv PV chInh 7; i tGng CuL7ish'r. ;
tha& s th4 hai 7; i tGng 5cn Uuht tJ 7C EventArgs. 9u cmu ch$ng ta ChDi thWc hi/n trnh
UE 7] sW ki/n th'o &cu nh tr9n.
EventArgs 7; 7C cF sf cho tht cD c2c 5? 7i/u .` sW ki/nv 7C EventArgs thJa k# tht cD c2c
ChFng th4c ca nK tJ Objectv .; th9& .;o &et trng public static '&CtV th3 hi/n &et sW
ki/n kh>ng cK trBng th2i {cho ChgC sE 56ng hi/u !uD nh?ng sW ki/n kh>ng trBng th2i}. +C
5cn Uuht tJ EventArgs ch4a nh?ng th>ng tin .` sW ki/n.
SW ki/n 7; thuec tInh ca 7C Ch2t ra sW ki/n. TJ khKa event i`u khi3n c2ch thuec tInh sW
ki/n Gc truV cSC Lfi c2c 7C suLscriL'r. TJ khKa '.'nt Gc thi#t k# 3 5uV tr cho c2ch th3
hi/n CuL7ish suLscriL'.
ZiD sE ch$ng ta &un tBo &et 7C Clock 5ong nh?ng sW ki/n 3 cDnh L2o nh?ng 7C
suLscriL'r Lht c4 khi n;o ng h h/ thng thaV i gi2 tr: trong &et giPV. ZOi sW ki/n n;V 7;
OnSecondChange. *h$ng ta khai L2o sW ki/n .; ki3u 5'7'gat' UE 7] sW ki/n ca nK nh sauu
[attributes] [modifiers] event type
member- name
I 56 khai L2o nh sauu
C<Ch'=y>1yn!?&i4n
)20
NgnNgLpTrnhC#
public event SecondChangeHandler OnSecondChange;
Trong .I 56 n;V ta kh>ng 5ong thuec tInhv &o5ifi'r f PV 7; abstractv newv overridev
staticv virtualv haV 7; &et trong Ln acc'ss &o5ifi'rv trong trng hGC n;V public. Mo5ifi'r
Gc th'o sau Lfi tJ khKa event.
Trng tVC' trong trng hGC .I 56 n;V 7; 5'7'gat' &; ch$ng ta &un 7i9n h/ .i sW ki/nv f
PV 7; SecondChangeHandler.
T9n th;nh .i9n 7; t9n ca sW ki/nv trong trng hGC n;V 7; OnSecondChange. Th>ng thngv
t9n sW ki/n L_t mu .i tJ On.
TK& 7Biv trong sW khai L2o n;V OnSecondChange 7; sW ki/n Gc thWc thi Lfi 5'7'gat' cK
ki3u 7; SecondChangeHandler.
Ta cK khai L2o cho 5'7'gat' n;V nh sauu
public delegate void SecondChangeHandler( object clock,
TimeInfoEventArgs timeInformation);
Nh z nKi trc PVv th'o !uV c &et trnh UE 7] sW ki/n ChDi trD .` gi2 tr: void .; ChDi 7hV
hai tha& su ngun Ch2t ra sW ki/n {trong trng hGC n;V 7; clock} .; &et i tGng 5cn Uuht
tJ EventArgsv 7; TimeInfoEventArgs. +C TimeInfoEventArgs Gc :nh nghda nh sauu
public class TimeInfoEventArgs : EventArgs
{
public TimeInfoEventArgs(int hour, int minute, int second)
{
this.hour = hour;
this.minute = minute;
this.second = second;
}
public readonly int hour;
public readonly int minute;
public readonly int second;
}
^i tGng TimeInfoEventArgs sH cK th>ng tin .` gi Ch$t giPV hi/n thi. NK :nh nghda &et
Le khfi tBov La ChFng th4cv &et Li#n nguV9n readonl%.
Ngo;i .i/c th9& .;o &et sW ki/n .; 5'7'gat'v 7C i tGng Clock cK La Li#n th;nh .i9n 7; u
hourv minutev .; second. *ui cong 7; &et ChFng th4c Run()u
public void Run()
{
for(;;)
{
// ngng 10 giy
Thread.Sleep( 10 );
C<Ch'=y>1yn!?&i4n
)2=
NgnNgLpTrnhC#
// ly thi gian hin hnh
System.DateTime dt = System.DateTime.Now;
// nu giy thay di cnh bo cho subscriber
if ( dt.Second != second)
{
// tao TimeInfoEventArgs d truyn
// cho subscriber
TimeInfoEventArgs timeInformation =
new TimeInfoEventArgs( dt.Hour, dt.Minute, dt.Second);
// nu c bt c lp no dng k th cnh bo
if ( OnSecondChange != null)
{
OnSecondChange( this, timeInformation);
}
}
// cp nht trang thi
this.second = dt.Second;
this.minute = dt.Minute;
this.hour = dt.Hour;
}
}
1hFng th4c Run tBo .ng 7aC .> hBn 3 ki3& tra :nh k thi gian h/ thng. N#u thi gian
thaV i tJ i tGng Clock hi/n h;nhv th nK sH cDnh L2o cho tht cD c2c suLscriL'r .; sau K
cSC nhSt 7Bi nh?ng trBng th2i ca nK.
8c mu ti9n 7; ngJng 10 giPVu
Thread.Sleep(10);
PV ch$ng ta sE 56ng ChFng th4c tdnh ca 7C Thread tJ System.Threading ca .NET. SE
56ng ChFng th4c Sleep() 3 kgo 5;i khoDng c2ch gi?a hai 7mn thWc hi/n .ng 7aC.
Sau khi ngJng 10 &i7i giPVv ChFng th4c sH ki3& tra thi gian hi/n h;nhu
System.DateTime dt = System.DateTime.Now;
*4 khoDng 100 7mn ki3& trav th &et giPV sH Gc gia tqng. 1hFng th4c ghi nhSn sW thaV i
.; cDnh L2o #n nh?ng suLscriL'r ca nK. ^3 7;& Gc i`u n;Vv mu ti9n ChDi tBo ra &et i
tGng TimeInfoEventArgsu
if ( dt.Second != second)
{
// tao TimeInfoEventArgs d truyn cho cc subscriber
TimeInfoEventArgs timeInformation =
new TimeInfoEventArgs( dt.Hour, dt.Minute, dt.Second);
C<Ch'=y>1yn!?&i4n
)2A
NgnNgLpTrnhC#
}
; 3 cDnh L2o cho nh?ng suLscriL'r LYng c2ch kIch hoBt sW ki/n OnSecondChangeu
cDnh L2o cho c2c suLscriL'r
if ( OnSecondChange != null)
{
OnSecondChange( this, timeInformation);
}
N#u &et sW ki/n kh>ng cK Lht c4 7C suLscriL'r n;o qng k] th nK c 7Gng gi2 tr: 7; null.
1hmn ki3& tra L9n tr9n U2c :nh gi2 tr: ca sW ki/n cK ChDi 7; null haV kh>ngv 3 D& LDo rYng
cK tn tBi 7C qng k] nhSn sW ki/n trc khi gOi sW ki/n OnSecondChange.
*h$ng ta 7u ] rYng OnSecondChange 7hV hai tha& su ngun Ch2t ra sW ki/n .; i tGng
5cn Uuht tJ 7C EventArgs. PV ch$ng ta cK th3 thhV rYng tha& chi#u this ca 7C clock
Gc truV`n Lfi . clock 7; ngun Ch2t ra sW ki/n. Tha& s th4 hai 7; i tGng TimeInfo-
EventArgs Gc tBo ra f 5ng 7/nh L9n tr9n.
Met sW ki/n Gc Ch2t ra th sH gOi Lht c4 ChFng th4c n;o Gc qng k] .i 7C Clock th>ng
!ua 5'7'gat'v ch$ng ta sH ki3& tra i`u n;V sau.
Met khi &; sW ki/n Gc Ch2t rav ch$ng ta sH cSC nhSt 7Bi trBng th2i ca 7C Classu
this.second = dt.Second;
this.minute = dt.Minute;
this.hour = dt.Hour;
Sau cong 7; ch$ng ta UPV 5Wng nh?ng 7C cK th3 qng k] .;o c2c sW ki/n n;V. *h$ng ta sH tBo
hai 7C. +C mu ti9n 7; 7C DisplayClock. *h4c nqng chInh ca 7C n;V kh>ng ChDi 7; 7u gi?
thi gian &; chb 3 hi3n th: thi gian hi/n h;nh ra &;n hnh conso7'. ^3 Fn giDn ch$ng ta
chb tBo hai ChFng th4c cho 7C n;V. 1hFng th4c th4 nhht cK t9n 7; Subscribev ChFng th4c
ch:u tr2ch nhi/& qng k] &et sW ki/n OnSecondChange ca 7C Clock. 1hFng th4c th4 hai
Gc tBo ra 7; trnh U4 7] sW ki/n TimeHasChangedu
public class DisplayClock
{
public void Subscrible(Clock theClock)
{
theClock.OnSecondChange +=
new Clock.SecondChangeHandler(TimeHasChanged);
}
public void TimeHasChanged( object theClock, TimeInfoEventArgs ti)
{
Console.WriteLine("Current Time: {0]:{1}:{2},
ti.hour.ToString(), ti.minute.ToString(),
ti.Second.ToString());
C<Ch'=y>1yn!?&i4n
)2T
NgnNgLpTrnhC#
}
}
"hi ChFng th4c mu ti9n Subscribe Gc gOiv nK sH tBo ra &et 5'7'gat' SecondChange-
Handler &iv .; truV`n .;o ChFng th4c UE 7] sW ki/n TimeHasChanged ca nK. Sau K nK
sH qng k] 5'7'gat' .i sW ki/n OnSecondChange ca Clock.
+C th4 hai &; ch$ng ta tBo cng sH 2C 4ng sW ki/n n;Vv t9n 7; LogCurrentTime. Th>ng
thng 7C n;V ghi 7Bi sW ki/n .;o trong tSC tinv nhng .i &6c Ich &inh hOa ca ch$ng tav
nK sH ghi ra &;n hnh conso7'u
public class LogCurrentTime
{
public void Subscribe(Clock theClock)
{
theClock.OnSecondChange +=
new Clock.SecondChangeHandler(WriteLogEntry);
}
// thng thng phong thc ny vit ra file
// nhng trong minh ha ny chng ta ch xut
// ra mn hnh console m thi
public void WriteLogEntry( object theClock, TimeInfoEventArgs ti)
{
Console.WriteLine("Logging to file: {0}:{1}:{2},
ti.hour.ToString(),
ti.minute.ToString(),
ti.second.ToString());
}
}
Zhi ch$ rYng nh?ng sW ki/n Gc th9& .;o LYng c2ch sE 56ng to2n tE . ^i`u n;V cho ChgC
nh?ng sW ki/n &i Gc th9& .;o sW ki/n OnSecondChange ca i tGng Clock &; kh>ng
cK Ch2 hV Lht c4 sW ki/n n;o z Gc qng k]. "hi LogCurrentTime qng k] &et sW ki/n
OnSecondChangev ch$ng ta kh>ng &un .i/c qng k] n;V 7;& &ht i sW qng k] ca 7C
DisplayClock trc K.
Tht cD Chmn cn 7Bi cmn thWc hi/n 7; tBo ra &et 7C Clockv tBo &e i tGng DisplayClock .;
LDo nK qng k] sW ki/n. Sau K ch$ng ta tBo ra &et i tGng LogCurrentTime .; cng qng
k] sW ki/n tFng tW. *ui cong th thWc thi ChFng th4c ,un ca Clock. Tht cD Chmn tr9n
Gc trnh L;V trong .I 6 11.N.
89 d: 11(G) #-m NiI+ Noi nhng sO 1iIn(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
namespace ProgrammingCSharp
C<Ch'=y>1yn!?&i4n
))0
NgnNgLpTrnhC#
{
using System;
using System.Threading;
// lp lu gi thng tin v su kin, trong trng hop
// ny n ch lu gi nhng thng tin c gi tri lp clock
public class TimeInfoEventArgs : EventArgs
{
public TimeInfoEventArgs(int hour, int minute, int second)
{
this.hour = hour;
this.minute = minute;
this.second = second;
}
public readonly int hour;
public readonly int minute;
public readonly int second;
}
// khai bo lp Clock lp ny s pht ra cc su kin
public class Clock
{
// khai bo delegate m cc subscriber phi thuc thi
public delegate void SecondChangeHandler(object clock,
TimeInfoEventArgs timeInformation);
// su kin m chng ta da ra
public event SecondChangeHandler OnSecondChange;
// thit lp dng h thuc hin, s pht ra mi su kin trong mi giy
public void Run()
{
for(;;)
{
// ngng 10 giy
Thread.Sleep( 10 );
// ly thi gian hin hnh
System.DateTime dt = System.DateTime.Now;
// nu giy thay di cnh bo cho subscriber
if ( dt.Second != second)
{
// tao TimeInfoEventArgs d truyn
C<Ch'=y>1yn!?&i4n
))1
NgnNgLpTrnhC#
// cho subscriber
TimeInfoEventArgs timeInformation =
new TimeInfoEventArgs( dt.Hour, dt.Minute, dt.Second);
// nu c bt c lp no dng k th cnh bo
if ( OnSecondChange != null)
{
OnSecondChange( this, timeInformation);
}
}
// cp nht trang thi
this.second = dt.Second;
this.minute = dt.Minute;
this.hour = dt.Hour;
}
}
private int hour;
private int minute;
private int second;
}
// lp DisplayClock dng k su kin ca clock.
// thuc thi x l su kin bng cch hin thi gian hin hnh
public class DisplayClock
{
public void Subscrible(Clock theClock)
{
theClock.OnSecondChange +=
new Clock.SecondChangeHandler(TimeHasChanged);
}
public void TimeHasChanged( object theClock, TimeInfoEventArgs ti)
{
Console.WriteLine("Current Time: {0}:{1}:{2},
ti.hour.ToString(),
ti.minute.ToString(),
ti.second.ToString());
}
}
// lp dng k su kin th hai
public class LogCurrentTime
C<Ch'=y>1yn!?&i4n
))2
NgnNgLpTrnhC#
{
public void Subscribe(Clock theClock)
{
theClock.OnSecondChange +=
new Clock.SecondChangeHandler(WriteLogEntry);
}
// thng thng phong thc ny vit ra file
// nhng trong minh ha ny chng ta ch xut
// ra mn hnh console m thi
public void WriteLogEntry( object theClock, TimeInfoEventArgs ti)
{
Console.WriteLine("Logging to file: {0}:{1}:{2},
ti.hour.ToString(),
ti.minute.ToString(),
ti.second.ToString());
}
}
// lp Test minh ha s dng su kin
public class Test
{
public static void Main()
{
// tao ra di tong clock
Clock theClock = new Clock();
// tao di tong DisplayClock dng k
// su kin v x l su kin
DisplayClock dc = new DisplayClock();
dc.Subscribe(theClock);
// tao di tong LogCurrent v yu cu dng
// k v x l su kin
LogCurrentTime lct = new LogCurrentTime();
lct.Subscribe(theClock);
// bt du thuc hin vng lp v pht sinh su kin
// trong mi giy dng h
theClock.Run();
}
}
}
C<Ch'=y>1yn!?&i4n
)))
NgnNgLpTrnhC#
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>* thO+ hiIn +6 thi nh; sa>)
Current i#e: 11:5*:)0
9ogging to "i!e: 11:5*:)0
Current i#e: 11:5*:)1
9ogging to "i!e: 11:5*:)1
Current i#e: 11:5*:))
9ogging to "i!e: 11:5*:))
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
^i`u !uan trOng chInh ca .I 56 &inh hOa tr9n 7; .i/c tBo ra hai 7C i tGng DisplayClock
.; 7C LogCurrentTime. *D hai 7C n;V `u qng k] &et sW ki/n Clock.OnSecondChange ca
7C th4 La 7; 7C Clock
+Gi Ich ca cF ch# CuL7ishsuLscriL' 7; Lht c4 7C n;o cng cK th3 Gc cDnh L2o khi &et sW
ki/n Uuht hi/n. Nh?ng 7C suLscriL'r kh>ng cmn Li#t c2ch &; Clock 7;& .i/cv .; Clock cng
kh>ng cmn Li#t c2ch &; c2c 7C suLscriL'r 2C 4ng .i sW ki/n &; nK a ra.
1uL7ish'r .; suLscriL'r Gc ChPn t2ch Lfi 5'7'gat'v PV 7; &et sW &ong Gi caov nK 7;& cho
&z 7/nh 7inh hOat .; &Bnh &H hFn. +C Clock cK th3 thaV i c2ch 5 thi gian &; kh>ng
7;& Dnh hfng #n Lht c4 7C suLscriL'r n;o. *2c 7C suLscriL'r cK th3 thaV i c2ch &;
ch$ng 2C 4ng .i sW thaV i ca thi gian &; kh>ng t2c eng .i Clock. *D hai 7C n;V
hoBt eng ec 7SC .i nhauv .; 7;& cho oBn chFng trnh 5 5uV tr hFn.
%Pu hSi *7 tr= ,i
CU> hVi 1u TK& t_t nh?ng ngt cF LDn .` u !uV`n
0r* #Wi 1) y A>yDn #- mYt 1ii> d #iI> tham +hi@> =;<+ dCng =i =6ng g6i ph;<ng thP+ Noi
+,+ tham sc N- 1ii> tr* ND _,+ =Mnh( y A>yDn +mng t;<ng tO nh; +on trV h-m trong ngn
ng C{{( 0>y nhi%nf trong ngn ng C# 7y A>yDn #- 1ii> d #iI> h;ong =ci t;Hngf an to-n
N- *o mt(
CU> hVi 2u *on trQ h;& 7; g
0r* #Wi 2) 0rong ngn ng nh; C hay C{{f +6 mYt +hP+ njng gBi #- +on trV h-m( MYt +on
trV h-m =;H+ sn d:ng =i thi@t #p +Cng mYt nhiIm N: nh; mYt 7y A>yDn( 0>y nhi%nf +on trV
h-m trong CzC{{ =<n gi*n 1hng ph*i #- mYt =ci t;Hng( CEn 7y A>yDn trong C# #- 1ii> d
#iI> an to-nf =;H+ dCng =i tham +hi@> =@n nhng ph;<ng thP+f 7y A>yDn +En =;H+ sn d:ng
gi nhng sO 1iIn(
%Pu hSi th5"
CU> hVi 1) C6 thi sn d:ng 7y A>yDn nh; mYt th>Y+ t9nh hay 1hngu N@> +6 thi th sn d:ng
nh; th@ n-ou Cho i@t t ngheau
CU> hVi 2) N@> +6 mYt sc hoLt =Yng +.n =;H+ thO+ hiIn th'o mYt thP tO nhXt =Mnh th ta ph*i
#-m th@ n-o =i 1hi +.n thO+ hiIn th gBi #.n #;Ht thO+ hiIn +,+ hoLt =Yng =6u
C<Ch'=y>1yn!?&i4n
))N
NgnNgLpTrnhC#
CU> hVi F) Cng d:ng +7a NiI+ 1hai ,o 7y A>yDn tenhu ?hi n-o th n%n 1hai ,o 7y A>yDn
tenh 1hi n-o th 1hng n%nu
CU> hVi G) MYt 7y A>yDn +6 thi gBi =;H+ nhiD> h<n mYt ph;<ng thP+ hay 1hngu ChP+ njng
n-o trong C# ha trH 7y A>yDn n-yu
CU> hVi Q) C6 ph*i tXt +* +,+ 7y A>yDn =D> #- 7y A>yDn M>#ti+ast hay 1hngu diD> 1iIn =i
trg th-nh 7y A>yDn M>#ti+astu
CU> hVi v) C,+ to,n tn n-o +6 thi dCng =i thO+ hiIn NiI+ M>#ti+ast +,+ 7y A>yDnu
CU> hVi w) SO 1iIn #- gu 0rong hI thcng Png d:ng n-o th sO 1iIn =;H+ sn d:ng nhiD>u
CU> hVi x) Nhng sO 1iIn trong C# =;H+ thO+ hiIn thng A>a +,i gu
CU> hVi y) &Jy t6m #;H+ A>, trnh tLo mYt sO 1iIn N- gi*i A>y@t sO 1iIn thng A>a +< +h@ 7y
A>yDn trong C#u
47i tT-
4-i tp 1) 8i@t +h;<ng trnh minh hBa sn d:ng 7y A>yDn =i thO+ hiIn NiI+ srp _@p +,+ sc
ng>y%n trong mYt m*ngu
4-i tp 2) 8i@t +h;<ng trnh minh hBa sn d:ng 7y A>yDn =i thO+ hiIn NiI+ +h>yin +,+ 1t tO
th;Wng th-nh 1t tO hoa trong mYt +h>aiu
4-i tp F) 8i@t +h;<ng trnh 1@t hHp gia d'#'gat' N- sO 1iIn =i minh hBa mYt =Kng hK =iIn
tn thi hiIn giW hiIn h-nh tr%n m-n hnh +onso#'(
C<Ch'=y>1yn!?&i4n
))-
NgnNgLpTrnhC#
C4/Nng 12
CC LzP C V .NET
L*+ X.i t/0ng trong .NET Wr6G[\orQ
L*+ TiG[r
L*+ H! t4/ Gc k 4C t4.ng
L*+ M6t4
L*+ t46o t<c tJ+ tin
LIG HiCc H*i tJ+ tin ' )iC@
C%@ 4ji k gIi tJ+
*ho #n 7$c n;V th ch$ng ta z t& hi3u kh2 nhi`u c2c 7C i tGng &; ng>n ng? *@
cung chC cho ch$ng ta. ; hi/n tBi ch$ng ta z cK th3 .i#t Gc c2c chFng trnh *@ thumn
t$V 5ong conso7' 7;& giao 5i/n k#t Uuht. ^i .i .i/c t& hi3u Lht c4 ng>n ng? 7SC trnh n;o
th .i/c .i#t c2c chFng trnh &; giao 5i/n c;ng Fn giDn th c;ng tt. Trong Chmn th4 hai {tJ
chFng 1N} ca gi2o trnh ch$ng ta sH t& hi3u UPV 5Wng c2c 4ng 56ng ~in5o(s th>ng !ua
isua7 *@.
Trong chFng n;V ch$ng ta sH t& hi3u c2c 7C cF sf &; .NET cung chCv c2c 7C n;V Fn
giDn gi$C ch$ng ta thWc hi/n tt c2c thao t2c nhSC Uuhtv c2c thao t2c truV cSC h/ thngv thWc
thi c2c ChgC to2n hOcv...
&- i t@ng trong .NET !ra"#$ork
NET %ra&'(ork ch4a s 7Gng nhi`u nh?ng ki3u 5? 7Cv nh?ng ki3u 7i/t k9v nh?ng chu
tr$cv nh?ng giao 5i/n .; nhi`u ki3u 5? 7i/u kh2c n?a. ThSt .SVv cK h;ng ng;n s 7Gng c2c
ki3u nh tr9n. Nh?ng 7C n;V i`u cho ChgC ch$ng ta sE 56ng trong chFng trnh *@.
*h$ng ta sH t& hi3u &et .;i ki3u 5? 7i/u thng sE 56ng trong chFng n;V. *2c 7C Gc
trnh L;V th>ng !ua c2c .I 56 &inh hOa Fn giDn. TJ nh?ng .I 56 &inh hOa c2ch sE 56ng c2c
7C cF sf n;V ch$ng ta cK th3 &f reng 3 tBo ra c2c chFng trnh Ch4c tBC hFn.
%o""on &anguag# S-#cification (%&')
Nh?ng 7C L9n trong %ra&'(ork Gc .i#t .i ng>n ng? Gc U2c nhSn 7; chung nhht
{*+,}. *+, z Gc ` cSC .;o Chmn mu ca s2ch khi ch$ng ta thDo 7uSn .` MS.NET trong
chFng 1.
C.cLpC<?@.NET
))0
NgnNgLpTrnhC#
*+S 7; &et tSC hGC c2c 7uSt haV c2c !uV t_c &; tht cD c2c ng>n ng? thWc hi/n L9n trong .NET
C7atfor& ChDi tuPn th th'o. TSC hGC 7uSt n;V cng Lao g& ki3u 5? 7i/u h/ thng chungv c2c
ki3u 5? 7i/u cF LDn &; ch$ng ta Gc t& hi3u trong chFng ) i N`n tDng ng>n ng? *@. 8Yng
c2ch a .;o c2c tSC 7uSt n;Vv &>i trng thWc thi chung sH cK th3 thWc thi &et chFng trnh
&; kh>ng !uan tP& #n c$ Ch2C ca ng>n ng? Gc sE 56ng.
+Gi Ich th'o sau ca *+S 7; &z ngun Gc .i#t trong &et ng>n ng? cK th3 Gc gOi sE 56ng
Lfi &et ng>n ng? kh2c 8fi . th>ng thng L9n trong %ra&'(ork .i *+Sv ch$ng cK th3 sE
56ng kh>ng chb ng>n ng? *@ &; cn Lht c4 ng>n ng? tFng thIch .i *+S nh 7; isua7
8asic.NET .; wScriCt.NET.
Ki0u 2: ,i+u trong na"#s-ac#
Mz ngun L9n trong %ra&'(ork Gc t ch4c L9n trong na&'sCac'. *K h;ng trq&
na&'sCac' L9n trong %ra&'(ork Gc sE 56ng 3 t ch4c h;ng ng;n 7C i tGng .; c2c
ki3u 5? 7i/u kh2c.
Met .;i na&'sCac' th Gc 7u tr? L9n trong na&'sCac' kh2c. I 56 ch$ng ta z sE 56ng
ki3u 5? 7i/u DateTime Gc ch4a trong na&'sCac' System. "i3u Random cng Gc ch4a
trong na&'sCac' System. Nhi`u ki3u 5? 7i/u Ch6c .6 cho thao t2c nhSC Uuht cng Gc 7u
tr? trong &et na&'sCac' ch4c trong na&'sCac' System 7; na&'sCac' System.<j. Nhi`u ki3u
5? 7i/u thng 5ong 3 7;& .i/c .i 5? 7i/u M+ th Gc at L9n trong na&'sCac'
System.M+. *h$ng ta cK th3 t& hi3u c2c na&'sCac' n;V trong c2c t;i 7i/u trWc tuV#n ca
Microsoft nh MSpN jn7in' chng hBn.
Ti5u chuJn E%Mp
"h>ng ChDi tht cD ki3u 5? 7i/u L9n trong na&'sCac' th cmn thi#t ChDi tFng thIch .i tht
cD nh?ng ng>n ng? kh2c. [Fn th# n?av nh?ng c>ng c6 Ch2t tri3n Gc tBo Lfi nh?ng c>ng tV
kh2c cho ng>n ng? *@ cK th3 kh>ng Lao h;& ChDi tFng thIch .i &z ngun th>ng thng.
"hi ng>n ng? *@ Gc hnh th;nh. Microsoft U2c nhSn a ra &et s 7Gng 7n c2c ki3u 5?
7i/u cho cong &et LDng ti9u chuMn cho *@ 3 chuMn hKa. 8Yng c2ch U2c nhSn nh?ng ki3u 5?
7i/u th'o &et ti9u chuMnv i`u n;V U'& nh .i/c &f c2nh cEa cho nh?ng nh; Ch2t tri3n kh2c
tBo ra c2c c>ng c6 .; trnh Li9n 5:ch *@ cong sE 56ng nh?ng na&'sCac' .; ki3u 5? 7i/u. "hi
K nh?ng &z ngun L9n trong nh?ng c>ng c6 ca Microsoft tFng thIch .i Lht c4 c>ng c6
ca c2c c>ng tV kh2c.
Nh?ng 7C i tGng Gc chuMn hKa th Gc :nh .: L9n trong na&'sCac' System. Nh?ng
na&'sCac' kh2c ch4a nh?ng 7C kh>ng Gc chuMn hKa. N#u &et 7C kh>ng ChDi 7; &et Chmn
ca ti9u chuMnv nK sH kh>ng Gc h\ trG trong tht cD h/ i`u h;nh .; &>i trng thWc thi &;
ch$ng Gc .i#t 3 h\ trG *@. I 56v Microsoft th9& .;o &et .;i na&'sCac' .i Sp" ca nK
nh Microsoft.VisualBasicv Microsoft.CSharpv Microsoft.script .; Microsoft.Win32. Nh?ng
na&'sCac' n;V kh>ng ChDi 7; &et Chmn ca ti9u chuMn E*My. po K ch$ng cK th3 kh>ng cK
gi2 tr: trong tht cD &>i trng Ch2t tri3n.
C.cLpC<?@.NET
))=
NgnNgLpTrnhC#
T" hi0u nh:ng ,- !ra"#$ork
Nh ch$ng ta z Li#t 7; cK h;ng ng;n nh?ng 7C .; nh?ng ki3u 5? 7i/u kh2c L9n trong th
.i/n cF sf. *K th3 sH tn .;i cun s2ch cK kIch thc nh gi2o trnh n;V 3 nKi to;n Le .`
ch$ng. Trc khi ch$ng ta t& hi3u nh?ng 7C cF LDnv LBn cK th3 U'& tng !uan t;i 7i/u trWc
tuV#n 3 Li#t th9& c2c 7C cF cf. Tht cD c2c 7C .; nh?ng ki3u 5? 7i/u kh2c Gc trnh L;V
trong chFng n;V i`u 7; &et Chmn ca ti9u chuMn Gc U2c nhSn Lfi E*My.
L;> tu "h>ng nh?ng ch$ng ta cK th3 sE 56ng nh?ng ki3u 5? 7i/u L9n trong nh?ng 7C th
.i/n &; ch$ng ta cn cK th3 &f reng nh?ng ki3u 5? 7i/u n;V.
&- Ti"#r
*h$ng ta L_t mu .i .I 56 mu ti9n 12.1. I 56 &inh hOa n;V h#t s4c Fn giDn .; Gc thi#t
k# kh>ng Gc tt.
89 d: 12(1) &iin thM thWi gian(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
// Timer01.cs: Hin thi ngy v thi gian
// nhn Ctrl+C d thot
namespace ProgrammingCSharp
{
using System;
public class Tester
{
public static void Main()
{
while (true)
{
Console.WriteLine("\n {0}, DateTime.Now);
}
}
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
1);)*;)001 3:)1:)0 EM
.......
.......
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Nh ch$ng ta cK th3 thhVv k#t !uD chFng trnh Gc thWc thi .;o 7$c )u21 .;o ng;V 2N th2ng
12. panh s2ch n;V th3 hi/n &et ng h Uuht hi/n f 5ng 7/nhv .; ch$ng 5ng nh 7; Gc
C.cLpC<?@.NET
))A
NgnNgLpTrnhC#
cSC nhSt trong &\i giPV ng h. ThSt .SVv nK th>ng thng Gc cSC nhSt nhi`u hFn &et
7mnv 5o K ch$ng ta 7u ] 7; giPV ng h thaV i chb khi gi2 tr: Uuht hi/n thSt sW kh2c nhau.
*hFng trnh sH chBV &zi #n khi n;o ta nhhn tho2t LYng *tr7 *.
Trong chFng trnh ta sE 56ng ki3u 5? 7i/u DateTimev PV 7; &et chu tr$c Gc ch4a trong
na&'sCac' System L9n trong th .i/n cF sf. *hu tr$c n;V cK &et thuec tInh tdnh 7; Now trD
.` thi gian hi/n h;nh. *K nhi`u 5? 7i/u th;nh .i9n .; nh?ng ChFng th4c Gc th9& .;o
trong chu tr$c DateTime. *h$ng ta cK th3 t& hi3u th9& .` DateTime trong th .i/n trWc
tuV#n .` c2c 7C cF sf ca .NET %ra&'(ork.
*2ch tt nhht 3 hi/n th: ng;V gi tr9n &;n hnh 7; sE 56ng Timer. Met Timer cho ChgC &et
UE 7] {hnh th4c ca &et 5'7'gat'} Gc gOi tBi &et thi gian U2c :nh haV sau &et chu k
n;o K tr>i !ua. %ra&'(ork ch4a &et 7C Timer L9n trong na&'sCac' System.Timers. +C
n;V Gc sE 56ng trong .I 56 12.2 th'o sauu
89 d: 12(2) Sn d:ng 0im'r(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
// Timer02.cs: hiu thi ngy gi s dng Timer
// nhn Ctrl+C hay `q v Enter d thot
namespace ProgrammingCSharp
{
using System;
using System.Timers;
public class Tester
{
public static void Main()
{
Timer myTimer = new Timer();
// khai bo hm x l
myTimer.Elapsed 23 new ElapsedEventHandler( DisplayTimeEvent);
// khong thi gian delay
myTimer.Interval = 1000;
myTimer.Start();
// thuc hin vng lp d ch thot
while ( Console.Read() != `q)
{
; // khng lm g ht!
}
}
public static void DisplayTimeEvent( object source, ElapsedEventArgs t)
{
C.cLpC<?@.NET
))T
NgnNgLpTrnhC#
Console.Write("\n{0}, DateTime.Now);
}
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
1);)*;)001 3:*5:)0 EM
......
......
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
"#t !uD thWc hi/n cng ging nh .I 56 trc. TuV nhi9nv chFng trnh n;V thWc hi/n tt hFn
nhi`u so .i chFng trnh Lan mu. ThaV . cSC nhSt kh>ng ngJng ng;V gi Gc hi3n th:v
chFng trnh n;V chb cSC nhSt sau khoDng 1 giPV. *h$ng ta hzV U'& k c2ch &; Timer 7;&
.i/c. Met i tGng Timer &i Gc tBo rav thuec tInh Interval Gc thi#t 7SC. Ti#C th'o
ChFng th4c sH Gc thWc hi/n sau khoDng thi gian int'r.a7 Gc g_n .i Timer. Trong
trng hGC n;V 7; ChFng th4c DisplayTimeEvent sH WFc thWc thiv ChFng th4c Gc :nh
nghda f L9n 5i.
"hi Timer thWc hi/n ChFng th4c Start th nK sH L_t mu tInh int'r.a7. Met thuec tInh th;nh
.i9n kh2c ca Timer 7; yuto,'s't &; ch$ng ta cng cmn Li#t 7;u n#u ch$ng ta thaV i gi2 tr:
&ac :nh ca nK tJ true sang falsev th sW ki/n Timer chb thWc hi/n 5uV nhht &et 7mn. "hi
yuto,'s't cK gi2 tr: true haV ta thi#t 7SC gi2 tr: true th Timer sH kIch hoBt sW ki/n .; thWc thi
ChFng th4c &\i &et thi gian Gc a ra {int'r.a7}.
Trong chFng trnh n;V .cn ch4a &et .ng 7aC thWc hi/n #n khi n;o ngi 5ong nhhn k] tW
!x .; Ent'r. N#u kh>ng chFng trnh thWc hi/n ti#C t6c .ng 7aC. "h>ng cK g thWc hi/n
trong .ng 7aC n;Vv n#u &un ch$ng ta cK th3 th9& .;o trong .ng 7aC nh?ng U4 7] kh2c.
*h$ng ta cng kh>ng cmn thi#t ChDi gOi ChFng th4c DisplayTimeEvent trong .ng 7aC Lfi .
nK sH Gc gOi tW eng .;o khoDng thi gian U2c :nh int'r.a7.
Timer trong chFng trnh n;V 5ong 3 th3 hi/n ng;V gi tr9n &;n hnh. Timer .; nh?ng sW
ki/n ca Timer cng cK th3 Gc sE 56ng cho nhi`u chFng trnh kh2c. Nh ch$ng ta cK th3
tBo Timer 3 t_t &et chFng trnh kh2c .;o &et thi i3& a ra. *h$ng ta cng cK th3 tBo
chFng trnh LackuC thng UuV9n 3 sao chgC nh?ng 5? 7i/u !uan trOng th'o &et :nh k
thi gian n;o K. [aV ch$ng ta cng cK th3 tBo &et chFng trnh tW eng 7og off &et ngi sE
56ng haV k#t th$c &et chFng trnh sau &et khoDng thi gian &; kh>ng cK Lht c4 hoBt eng
n;o UDV ra. NKi chung 7; cK rht nhi`u c2ch sE 56ng Timer n;Vv .; 7C Timer n;V rht h?a Ich.
&- *C th "3c *7 h+ thng
^>i khi ch$ng ta cmn Li#t th>ng tin h/ thng ca &2V &; chFng trnh ang thWc hi/nv
i`u n;V kh>ng khK khqn gv .NET h\ trG &et s 7C cF LDn 3 thWc hi/n .i/c n;V. Trong .I
C.cLpC<?@.NET
)N0
NgnNgLpTrnhC#
56 &inh hOa 12.) L9n 5i sH trnh L;V c2ch 7hV c2c th>ng tin .` &2V tInh .; &>i trng ca
nK. i/c thWc hi/n n;V th>ng !ua sE 56ng 7C Environmentv trong 7C n;V ch4a &et s 5?
7i/u th;nh .i9n tdnh .; ch$ng ta sH th$ .: .i th>ng tin ca ch$ng.
89 d: 12(F) Sn d:ng #op /nNironm'nt(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
// env01.cs: hin thi thng tin ca lp Environment
namespace ProgrammingCSharp
{
using System;
class Tester
{
public static void Main()
{
// cc thuc tnh
Console.WriteLine("**************************);
Console.WriteLine("Command: {0}, Environment.CommandLine);
Console.WriteLine("Curr Dir: {0}, Environment.CurrentDirectory);
Console.WriteLine("Sys Dir: {0}, Environment.SystemDirectory);
Console.WriteLine("Version: {0}, Environment.Version);
Console.WriteLine("OS Version: {0}, Environment.OSVersion);
Console.WriteLine("Machine: {0}, Environment.MachineName);
Console.WriteLine("Memory: {0}, Environment.WorkingSet);
// dng mt vi cc phong thc
Console.WriteLine("**************************);
string [] args = Environment.GetCommandLineArgs();
for( int i = 0; i < args.Length; i++)
{
Console.WriteLine("Arg {0}: {1}, i, args[i]);
}
Console.WriteLine("**************************);
string [] drivers = Environment.GetLogicalDrives();
for( int i = 0; i < drivers.Length; i++)
{
Console.WriteLine("Drive {0}: {1}, i, drivers[i]);
}
Console.WriteLine("**************************);
Console.WriteLine("Path: {0},
Environment.GetEnvironmentVariable("Path));
C.cLpC<?@.NET
)N1
NgnNgLpTrnhC#
Console.WriteLine("**************************);
}
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>* thO+ hiIn Noi m,y t9nh +7a t,+ gi* \1@t A>* s` 1h,+ Noi m,y t9nh +7a Ln)]
PPPPPPPPPPPPPPPPPPPPPPPPPP
Co##and: D:Q>orkingQConso!eB&&!ication1QbinQDebugQ:n$01.e(e
Curr Dir: D:Q>orkingQConso!eB&&!ication1QbinQDebug
S's Dir: C:Q>8ND?>SQS'ste#3)
2ersion: 1.0.3605.0
?S 2ersion: Microso"t >indows N 5.1.)+00.0
Machine: M=N
Me#or': *565)3)
PPPPPPPPPPPPPPPPPPPPPPPPPP
Brg 0: D:Q>orkingQConso!eB&&!ication1QbinQDebugQ:n$01.e(e
PPPPPPPPPPPPPPPPPPPPPPPPPP
Dri$e 0: B:Q
Dri$e 1: C:Q
Dri$e ): D:Q
Dri$e 3: ::Q
PPPPPPPPPPPPPPPPPPPPPPPPPP
Eath:
C:Q>8ND?>SQs'ste#3)RC:Q>8ND?>SRC:Q>8ND?>SQS'ste#3)Q>be#RC:Q>8ND?>SRC:Q>8ND?
>SQC?MMBNDRC:QNC
PPPPPPPPPPPPPPPPPPPPPPPPPP
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Nh ch$ng ta thhV th nh?ng th;nh .i9n tdnh ca 7C Environment cung chC cho ta nh?ng
th>ng tin h/ thng .; &>i trng. ^mu ti9n 7; 7/nh thWc hi/n Gc a ra chInh 7; chFng
trnh ang thWc thi t4c 7; chFng trnh En.01.'U'v thuec tInh Gc 5ong 3 7hV 7; Command-
Line. Th &6c hi/n h;nh chInh 7; th &6c ch4a chFng trnh thWc thi th>ng !ua thuec tInh
CurrentDirectory. TFng tW nh .SV c2c thuec tInh h/ thng nhu th &6c h/ thngv Chi9n
LDn jSv t9n &2V tInhv Le nh cng Gc 7hV ra.
Ti#C th'o 7; hai ChFng th4c ca 7C Environment trD .` &Dng chu\i k] tWv Lao g& ChFng
th4c 7hV i &6c 5ng 7/nh GetCommandLineArgs .; ChFng th4c nhSn th>ng tin .` f da
7ogic trong &2V tInh GetLogicalDrives. [ai .ng 7aC Fn giDn 7; 3 Uuht gi2 tr: tJng th;nh
Chmn trong &Dng ra.*ui cong 7; ChFng th4c GetEnvironmentVariable nhSn Li#n &>i
trng .; nh?ng gi2 tr: ca ch$ng trong h/ thng hi/n thi.
C.cLpC<?@.NET
)N2
NgnNgLpTrnhC#
&- Math
TJ mu ti gi ch$ng ta chb thWc hi/n c2c ChgC to2n cF LDn nh cengv trJv nhPnv chiav chia
5. *n rht nhi`u c2c ChgC to2n &Bnh hFn .; cng thng sE 56ng &; ch$ng cha Gc `
cSC ti. *@ cung chC &et tSC hGC c2c ChgC to2n to2n hOc L9n trong nh?ng 7C cF sf. *h$ng
Gc ch4a L9n trong ca na&'sCac' System.Math. 8Dng 12.1 sau 7i/t k9 nh?ng h;& to2n
hOc.
+C Math 7; 7C sealedv 5o K ch$ng ta kh>ng th3 UPV 5Wng &et 7C &i &; k# thJa tJ 7C
n;V Gc. Th9& .;o K tht cD nh?ng 7C .; 5? 7i/u th;nh .i9n `u 7; tdnhv 5o .SV ch$ng ta
kh>ng th3 tBo &et i tGng cK ki3u Math. ThaV .;o K ch$ng ta sH sE 56ng nh?ng th;nh
.i9n .; ChFng th4c .i t9n 7C.
L*+ M6t4
P4/Nng t4`c M t"
Abs TrD .` tr: tuV/t i ca &et s
Ceiling TrD .` gi2 tr: nhQ nhht haV LYng gi2 tr: a ra
Exp TrD .` gi2 tr: ' .i & a ra
Floor TrD .` gi2 tr: 7n nhht haV LYng gi2 tr: a ra
IEEERemainder TrD .` Chmn 5 ca ChgC chia hai hai s thWc. 1hgC
chia n;V th'o ti9u chuMn ca <EEE cho ChgC to2n 5hu
chh& eng nh: ChPn.
Log TrD .` gi2 tr: 7ogarit ca gi2 tr: a ra
Log10 TrD .` gi2 tr: 7ogarit cF s 10 ca s a ra
Max TrD .` s 7n trong hai s
Min TrD .` s nhQ trong hai s
Pow TrD .` k#t !uD U
V
Round TrD .` gi2 tr: Gc 7;& trn
Sign TrD .` gi2 tr: 5hu ca &et s. i1 n#u s P& .; 1 n#u
s 5Fng
Sqrt TrD .` cqn LSc hai ca &et s
Acos TrD .` gi2 tr: &et gKc &; cosin LYng .i gi2 tr: a ra
Asin TrD .` gi2 tr: &et gKc &; sin LYng .i gi2 tr: a ra
Atan TrD .` gi2 tr: ca &et gKc &; tang LYng .i gKc a
ra
Atan2 TrD .` gi2 tr: ca &et gKc &; tang LYng .i tang ca
i3& {UvV} a ra
Cos TrD .` gi2 tr: cosin ca &et gKc a ra
Cosh TrD .` gi2 tr: hVC'rLo7ic cosin ca gKc a ra
Sin TrD .` gi2 tr: sin ca gKc a ra
C.cLpC<?@.NET
)N)
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
Sinh TrD .` gi2 tr: hVC'rLo7ic ca gKc a ra
Tan TrD .` gi2 tr: tang ca gKc
Tanh TrD .` gi2 tr: hVC'rLo7ic tang ca gKc.
&nh 12(1 ) Ph;<ng thP+ +7a Math(
Ngo;i ra 7C Math n;V cng a .;o hai hYng su PI .; s Ev PI trD .` gi2 tr: Ci trong to2n hOc
nh 7; 3.1415926535899323846 Zi2 tr: E trD .` gi2 tr: 2.182818284590452354.
[mu h#t c2c h;& to2n hOc trong LDng 12.1 tr9n 5 hi3u .; 5 sE 56ng. I 56 12.N sau &inh
hOa .i/c sE 56ng &et s h;& to2n hOc nh sauu
89 d: 12(G) Sn d:ng mYt N-i h-m to,n hB+(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
namespace ProgrammingCSharp
{
public class Tester
{
public static void Main()
{
int val2;
char ch;
for(double ctr = 0.0; ctr <= 10; ctr += .2)
{
val2 = (int) System.Math.Round((10*System.Math.Sin(ctr)));
for( int ctr2 = -10; ctr2 <=10; ctr2++)
{
if (ctr2 == val2)
ch = x;
else
ch = ;
Console.Write({0}, ch);
}
Console.WriteLine( );
}
}
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
U
C.cLpC<?@.NET
)NN
NgnNgLpTrnhC#
U
U
U
U
U
U
U
U
U
U
U
U
U
U
U
U
U
U
U
U
U
U
U
U
U
U
U
U
U
U
U
U
U
U
U
U
U
U
C.cLpC<?@.NET
)N-
NgnNgLpTrnhC#
U
U
U
U
U
U
U
U
U
U
U
U
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
ng 7aC mu ti9n thWc hi/n th>ng !ua &et Li#n 7aC 7; &et gi2 tr: doublev &\i Lc 7aC tqng .
2. Zi2 tr: Sin Gc 7hV th>ng !ua .i/c sE 56ng h;& Math.Sin. po gi2 tr: Sin tJ i1 #n 1 .; 3
cho 5 hi3n th: hFnv gi2 tr: n;V Gc chuV3n tJ i10 #n 10. ^3 chuV3n th;nh gi2 tr: n;V th ta
nhPn .i 10 ri sau K thWc hi/n .i/c 7;& trn LYng c2ch 5ong h;& Round ca Math.
"#t !uD ca ChgC nhPn .; 7;& trn 7; &et gi2 tr: tJ i10 #n 10 Gc g2n cho val2. ng 7aC
for th4 hai thWc hi/n .i/c Uuht &et k] tW ra &;n hnh.
&- thao t/c tT- tin
"hD nqng 3 .i#t th>ng tin .;o trong &et tSC tin haV Oc th>ng tin tJ trong &et tSC tin cK
th3 7;& cho chFng trnh ca ch$ng ta cK nhi`u hi/u !uD hFn. [Fn n?av cK rht nhi`u 7mn khi
ch$ng ta &un cK khD nqng 7;& .i/c .i nh?ng tSC tin hi/n h?u. 1hmn ti#C sau ch$ng ta sH
t& hi3u nh?ng ac tInh cF LDn ca .i/c thao t2c tr9n tSC tin. ^i`u n;V sH Gc th'o sau Lfi
&et kh2i ni/& !uan trOng ca tSC tin 7; 7ung {str'a&}.
Sao chf- "Ht tT- tin
Met 7C tSC tin tn tBi L9n trong 7C cF sf gOi 7; Filev 7C n;V Gc :nh .: L9n trong
na&'sCac' System.OI. +C File ch4a &et s c2c ChFng th4c tdnh Gc sE 56ng 3 thao t2c
tr9n tSC tin. ThSt .SVv tht cD c2c ChFng th4c L9n trong 7C File i`u 7; tdnh. 8Dng 12.2 7i/t k9
nh?ng ChFng th4c chInh ca 7C File.
L*+ Wi)[
P4/Nng t4`c M t"
AppendText Ni .qn LDn .;o trong &et tSC tin
Copy TBo ra &et tSC tin &i tJ tSC tin hi/n h?u
C.cLpC<?@.NET
)N0
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
Create TBo ra &et tSC tin &i f &et .: trI U2c :nh
CreateText TBo ra tSC tin 7u gi? t'Ut
Delete Ka tSC tin f .: trI U2c :nh. TSC tin ChDi hi/n h?u
n#u kh>ng sH Ch2t sinh ra ngoBi 7/.
Exists "i3& tra U'& tSC tin cK thWc sW hi/n h?u f .: trI n;o
K.
GetAttributes +hV th>ng tin thuec tInh ca tSC tin. Th>ng tin n;V
Lao g&u tSC tin cK L: ngn haV kh>ngv t9n th &6cv cK
thuec tInh Mnv thuec tInh chb Ocv tSC tin h/ thng...
GetCreationTime TrD .` ng;V gi tSC tin Gc tBo ra
GetLastAccessTime TrD .` ng;V gi tSC tin Gc truV cSC 7mn cui
GetLastWriteTime TrD .` ng;V gi tSC tin Gc .i#t 7mn cui
Move *ho ChgC tSC tin Gc 5i chuV3n .;o .: trI &i .; i
t9n tSC tin.
Open Mf &et tSC tin tBi .: trI a ra. 8Yng .i/c &f tSC tin
n;V ch$ng ta cK th3 .i#t th>ng tin haV Oc th>ng tin tJ
nK.
OpenRead Mf &et tSC tin hi/n h?u 3 Oc
OpenText Mf &et tSC tin 3 Oc 5Bng t'Ut
OpenWrite Mf &et tSC tin U2c :nh 3 .i#t
SetAttributes Thi#t 7SC thuec tInh cho tSC tin
SetCreationTime Thi#t 7SC ng;V gi tBo tSC tin
SetLastAccessTime Thi#t 7SC 7Bi ng;V gi &; tSC tin Gc truV cSC 7mn
cui
SetLastWriteTime Thi#t 7SC ng;V gi &; tSC tin Gc cSC nhSt 7mn cui.
4*ng 12(2 ) MYt sc ph;<ng thP+ +h9nh thao t,+ tp tin(
*hFng trnh 12.- sau &inh hOa .i/c sao chgC &et tSC tin.
89 d: 12(Q) Sao +hqp mYt tp tin(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
// file : filecopy.cs: sao chp mt tp tin
// s dng tham s dng lnh
namespace ProgrammingCSharp
{
using System;
using System.IO;
public class Tester
{
public static void Main()
C.cLpC<?@.NET
)N=
NgnNgLpTrnhC#
{
string[] CLA = Environment.GetCommandLineArgs();
if ( CLA.Length < 3)
{
Console.WriteLine("Format: {0} orig-file new-file, CLA[0]);
}
else
{
string origfile = CLA[1];
string newfile = CLA[2];
Console.Write("Copy...);
try
{
File.Copy(origfile, newfile);
}
catch (System.IO.FileNotFoundException)
{
Console.WriteLine("\n{0} does not exist!, origfile);
return;
}
catch (System.IO.IOException)
{
Console.WriteLine("\n{0} already exist!, newfile);
return;
}
catch (Exception e)
{
Console.WriteLine("\nAn exception was thrown trying to copy file);
Console.WriteLine();
return;
}
Console.WriteLine("...Done);
}
}
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
C.cLpC<?@.NET
)NA
NgnNgLpTrnhC#
*hFng trnh thWc hi/n LYng c2ch sau khi Li9n 5:ch ra tSC tin fi7'coCV.'U' ta gOi thWc hi/n tSC
tin n;V .i tha& s 5ng 7/nh nh sauu
filecopy.exe filecopy.cs filecopy.bak
TSC tin fi7'coCV.cs z hi/n h?u .; tSC tin fi7'coCV.Lak th cha hi/n h?u cho #n khi 7/nh n;V
thWc thi. Sao khi thWc thi Uong chFng trnh tSC tin fi7'coCV.Lak Gc tBo ra. N#u ch$ng ta
thWc hi/n chFng trnh 7mn th4 hai cng .i c2c tha& s nh .SVv th ch$ng ta sH nhSn Gc
k#t !uD Uuht nh sauu
Copy...
filecopy.bak already exists!
N#u ch$ng ta thWc hi/n chFng trnh &; kh>ng cK Lht c4 tha& s n;ov haV chb cK &et tha&
sv ch$ng ta sH nhSn Gc k#t !uD nh sau u
Format d:\working\filecopy\filecopy.exe orig-file new-file
*ui congv i`u t/ nhht UDV ra 7; ch$ng ta thWc hi/n sao chgC nhng tSC tin ngun kh>ng tn
tBiu
Copy...
filecopy.cs does not exist!
Nh ch$ng ta ta thhV tht cD c2c k#t !uD cK th3 cK ca chFng trnh &inh hOa 12.- tr9n.
*hFng trnh thWc hi/n .i/c sao chgC &et tSC tin .; nK ki3& tra tht cD c2c tnh hung cK th3
cK .; thWc hi/n .i/c UE 7] c2c ngoBi 7/. ^i`u n;V cho thhV chFng trnh .Ja 2C 4ng Gc
&at 7ogic ca 7SC trnh .Ja 2C 4ng Gc .i/c UE 7] c2c ngoBi 7/.
Nh ch$ng ta Li#t trong 7/nh sauu
string[] CLA = Environment.GetCommandLineArgs();
thWc hi/n .i/c 7hV c2c tha& s 5ng 7/nh Gc chC cho chFng trnh. +C Environment n;V
ch$ng ta z t& hi3u .; z sE 56ng trong Chmn trc.
+/nh sau ki3& tra U'& chFng trnh cK nhSn Gc It hfn gi2 tr: tha& s 5ng 7/nh haV
kh>ng.
if ( CLA.Length < 3)
{
Console.WriteLine("Format: {0} orig-file new-file, CLA[0]);
}
N#u gi2 tr: n;V nhQ hFn )v ngi sE 56ng z kh>ng cung chC th>ng tin. N9n nh rYngv sE
56ng ChFng th4c GetCommandLineArgsv th gi2 tr: mu ti9n &; ch$ng ta nhSn Gc 7; t9n
ca chFng trnh. 1hmn cn 7Bi 7; c2c tha& s 5ng 7/nh Gc th'o sau. ^i`u n;V cK nghda
rYng ch$ng ta cmn thi#t ) gi2 tr:u t9n chFng trnhv t9n tSC tin ngunv t9n tSC tin &i. N#u
ch$ng ta nhSC .;o kh>ng ) tha& s 5ng 7/nhv th chFng trnh sH Uuht ra th>ng L2o .i
t9n ca chFng trnh thWc hi/n Gc Oc Lfi GetCommandLineArgs.
N#u cung chC mV c2c tha& sv .i/c UE 7] sao chgC sH Gc thWc hi/n. ^3 5 th'o 5i th
chFng trnh Uuht ra th>ng L2o .i/c sao chgC fi7'u
C.cLpC<?@.NET
)NT
NgnNgLpTrnhC#
Console.Write("Copy...);
.....
Console.WriteLine("...Done);
Mac 5ong .i/c sao chgC tSC tin kh>ng cK g Ch4c tBCv nhng ch$ng ta 7u ] rYng trong
chFng trnh tr9n ch$ng ta cK th9& .;o c2c oBn UE 7] ngoBi 7/. i/c gOi h;& Copy ca File
Gc Lao LOc trong khi tr%v .; sau K 7; La th3 hi/n ca Catch th'o sau. 8fi . cK rht nhi`u
th4 cK th3 gPV ra 7\i 5o c2c hoBt eng tr9n tSC tinv ` ngh: rYng ch$ng ta n9n D& LDo cho
chFng trnh ca ch$ng ta thWc hi/n .i/c L_t gi? .; UE 7] c2c ngoBi 7/ tFng 4ng.
[mu h#t nh?ng ChFng th4c File cK nh?ng ngoBi 7/ z Gc :nh nghda cho &et s c2c 7\i
!uan trOng cK th3 Uuht hi/n. "hi ch$ng ta tra c4u t;i 7i/u trWc tuV#n cho &et 7C. *h$ng ta sH
t& thhV Lht c4 nh?ng ngoBi 7/ n;o Gc :nh nghda cho ChFng th4c a ra. Met c2ch thWc
h;nh 7SC trnh tt 7; th9& .;o c2c oBn UE 7] ngoBi 7/ .i Lht c4 ngoBi 7/ n;o cK th3 Uuht hi/n.
Trong chFng trnh ngoBi 7/ mu ti9n Gc UE 7] cho .i/c gOi h;& Copy() 7;u
catch (System.IO.FileNotFoundException)
{
Console.WriteLine("\n{0} does not exist!, origfile);
return;
}
NgoBi 7/ n;V Gc Ch2t sinh khi &et tSC tin &; ch$ng ta c sao chgC kh>ng t& thhVv ngoBi 7/
n;V Gc at t9n 7; FileNotFoundException.
NgoBi 7/ ti#C th'o Gc L_t 7; IOException. NgoBi 7/ n;V Gc Ch2t sinh tJ &et s ngoBi 7/
kh2c. 8ao g& &et th &6c kh>ng t& thhV {DirectoryNotFoundException}v k#t th$c ca tSC
tin kh>ng WFc t& thhV {EndOfStreamException}v cK 7\i Oc tSC tin {FileLoadException}v
haV 7; 7\i tSC tin kh>ng Gc t& thhVv nhng ngoBi 7/ n;V sH Gc L_t trong UE 7] ngoBi 7/
L9n tr9n. NgoBi 7/ n;V cng Gc Ch2t sinh khi tSC tin &; ch$ng ta cmn tBo &i z tn tBi.
*ui congv ch$ng ta sH L_t gi? nh?ng ngoBi 7/ kh>ng &ong Gi cn 7Bi LYng sE 56ng ngoBi 7/
chung haV ngoBi 7/ tng !u2t. 8fi . ch$ng ta kh>ng Li#t nguV9n nhPn ca .i/c UDV ra ngoBi
7/v f PV chb cK th3 hi3n th: th>ng i/C ca chInh LDn thPn ngoBi 7/ Ch2t sinh.
2hi +h3u N9n sE 56ng UE 7] ngoBi 7/ khi thao t2c tr9n tSC tin. 1hong c2ch 7SC trnh tt 7;
kh>ng n9n nghd rYng ngi sE 56ng sH cung chC cho chFng trnh &Oi th4 &; chFng trnh
cmn nhht 7; khi sE 56ng tha& s 5ng 7/nh.
&iL th9ng tin *C tT- tin
Ngo;i 7C File Gc cung chC tJ th .i/n cF sfv &et 7C kh2c cng thng UuV9n Gc sE
56ng th3 7;& .i/c .i tSC tin 7; 7C FileInfo. *hFng trnh 12.0 &inh hOa .i/c sE 56ng 7C
n;V. Trong chFng trnh n;V sH 7hV &et t9n tSC tin .; hi3n th: kIch thc .; nh?ng ng;V !uan
trOng 7i9n !uan #n .i/c tBov L sung tSC tin.
89 d: 12(v) Sn d:ng #op Fi#'lnTo(
C.cLpC<?@.NET
)-0
NgnNgLpTrnhC#
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
// Filsize.cs
namespace ProgrammingCSharp
{
using System;
using System.IO;
public class Tester
{
public static void Main()
{
string[] CLA = Environment.GetCommandLineArgs();
FileInfo fiExe = new FileInfo( CLA[0] );
if ( CLA.Length < 2)
{
Console.WriteLine("Format: {0} filename, fiExe.Name);
}
else
{
try
{
FileInfo fiFile = new FileInfo( CLA[1]);
if (fiFile.Exists)
{
Console.WriteLine("******************************);
Console.WriteLine("{0} {1},fiFile.Name, fiFile.Length);
Console.WriteLine("******************************);
Console.WriteLine("Last access: {0},fiFile.LastAccessTime);
Console.WriteLine("Last write: {0}, fiFile.LastWriteTime);
Console.WriteLine("Creation: {0}, fiFile.CreationTime);
Console.WriteLine("******************************);
}
else
{
Console.WriteLine("{0} doesnt exist!, fiFile.Name);
}
}
catch (System.IO.FileNotFoundException)
{
C.cLpC<?@.NET
)-1
NgnNgLpTrnhC#
Console.WriteLine("\n{0} does not exists!, CLA[1]);
return;
}
catch (Exception e)
{
Console.WriteLine("\n An exception was thrown trying to copy file);
Console.WriteLine();
return;
}// end catch
}// end else
}// end Main
}// end class
}// end namespace
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
PPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
"i!esi@e.cs 13+0
PPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
9ast access: 1);5;)00) 1):00:00 BM
9ast write: 1);5;)00) 5:50:50 EM
Creation: 1);5;)00) 5:53:31 EM
PPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Met i tGng FileInfo Gc tBo ra .; g_n .i &et tSC tin tFng 4ngu
FileInfo fiInfo = new FileInfo( CLA[1]);
Tha& s ca Le khfi 5Wng 7C FileInfo U2c :nh t9n ca tSC tin &; nK sH ch4a nhSn th>ng tinv
trong trng hGC n;V nK sH 7hV tha& s th4 hai ca tha& s 5ng 7/nh 7;& tSC tin &; nK sH
thWc hi/n. N#u ngi 5ong kh>ng nhSC t9n tSC tin th chFng trnh sH in ra t9n ca chFng
trnh.
&7" *i+c *i tT- tin 2: ,i+u
1hmn trc ch$ng ta z thWc hi/n c>ng .i/c nh 7hV th>ng tin ca tSC tin .; sao chgC tSC
tin sang &et tSC tin &i. i/c thWc hi/n !uan trOng ca tSC tin 7; Oc .; .i#t nh?ng th>ng tin
tJ tSC tin. Trong Chmn n;V ch$ng ta sH t& hi3u .` 7ung nhSC Uuht .; c2ch tBo &i &et tSC
tin 3 ghi haV &f &et tSC tin z tn tBi 3 Oc th>ng tin.
&ung nhT- Uuit
ThuSt ng? tSC tin th nKi chung 7; 7i9n !uan #n nh?ng th>ng tin 7u tr? L9n trong \ da
hoac trong Le nh. "hi 7;& .i/c .i tSC tinv ch$ng ta Lao h;& .i .i/c sE 56ng &et 7ung.
C.cLpC<?@.NET
)-2
NgnNgLpTrnhC#
Nhi`u ngi nhm& 7cn .` sW kh2c nhau gi?a tSC tin .; 7ung. Met 7ung Fn giDn 7; 7ung
ca th>ng tinv ch4a th>ng tin sH Gc chuV3n !uav cn tSC tin th 3 7u tr? th>ng tin.
Met 7ung Gc sE 56ng 3 gfi .; nhSn th>ng tin tJ Le nhv tJ &Bngv ('Lv tJ &et
chu\iv...Met 7ung cn Gc sE 56ng 3 i .;o .; ra .i &et tSC tin 5? 7i/u.
Th1 tV cda *i+c Qc "Ht tT- tin
"hi Oc haV .i#t &et tSC tinv cmn thi#t ChDi th'o &et trnh tW U2c :nh. ^mu ti9n 7; ChDi
thWc hi/n c>ng .i/c &f tSC tin. N#u nh tBo &i tSC tinv th .i/c &f tSC tin cong 7$c .i .i/c
tBo ra tSC tin K. "hi &et tSC tin z &fv cmn thi#t ChDi tBo cho nK &et 7ung 3 at th>ng tin
.;o trong &et tSC tin haV 7; 7hV th>ng tin ra tJ tSC tin. "hi tBo &et 7ungv cmn thi#t ChDi chb ra
th>ng tin trWc ti#C sH Gc i !ua 7ung. Sau khi tBo &et 7ung g_n .i &et tSC tinv th 7$c n;V
ch$ng ta cK th3 thWc hi/n .i/c Oc ghi c2c 5? 7i/u tr9n tSC tin. "hi thWc hi/n .i/c Oc th>ng
tin tJ &et tSC tinv ch$ng ta cmn thi#t ChDi ki3& tra U'& con trQ tSC tin z chb ti cui tSC tin
chav t4c 7; ch$ng ta z Oc #n cui tSC tin haV cha. "hi ho;n th;nh .i/c Oc ghi th>ng tin
tr9n tSC tin th tSC tin cmn ChDi Gc Kng 7Bi.
TK& 7Bi c2c Lc cF LDn 3 7;& .i/c .i &et tSo tin 7;u
8c 1u Mf haV tBo &i tSC tin
8c 2u Thi#t 7SC &et 7ung ghi haV Oc tJ tSC tin
8c )u ^Oc haV ghi 5? 7i/u 79n tSC tin
8c Nu ^Kng 7SC tin 7Bi
%/c -h?ng th1c cho *i+c t<o *7 "e tT- tin
*K nhi`u ki3u 7ung kh2c nhau. *h$ng ta sH sE 56ng nh?ng 7ung kh2c nhau .; nh?ng
ChFng th4c kh2c nhau Ch6 thuec .;o ki3u 5? 7i/u L9n trong ca tSC tin. Trong Chmn n;Vv
.i/c Ocghi sH Gc thWc hi/n tr9n tSC tin .qn LDn. Trong Chmn k# ti#C ch$ng ta hOc c2ch Oc
.; .i#t th>ng tin tr9n tSC tin nh: ChPn. Th>ng tin nh: ChPn Lao h;& khD nqng &Bnh 7u tr? gi2
tr: s .; Lht c4 ki3u 5? 7i/u n;o kh2c.
^3 &f &et tSC tin tr9n da cho .i/c Oc .; .i#t tSC tin .qn LDnv ch$ng ta cmn ChDi sE 56ng
cD hai 7C File .; FileInfo. Met .;i ChFng th4c cK th3 sE 56ng trong nh?ng 7C n;V. *2c
ChFng th4c n;V Lao g&u
AppendText Mf &et tSC tin 3 .; tSC tin n;V cK th3 Gc th9& .qn LDn .;o trong nK.
TBo 7ung StreamWriter sE 56ng 3 th9& .;o trong .qn LDn.
Create TBo &i &et tSC tin
CreateText TBo .; &f &et tSC tin .qn LDn. TBo ra &et 7ung StreamWriter.
Open Mf &et tSC tin 3 Oc.i#t. Mf &et FileStream
OpenRead Mf &et tSC tin 3 Oc
OpenText Mf &et tSC tin .qn LDn 3 Oc. TBo ra StreamReader 3 sE 56ng.
OpenWrite Mf &et tSC tin cho .i/c Oc .; ghi.
C.cLpC<?@.NET
)-)
NgnNgLpTrnhC#
+;& th# n;o 3 ch$ng ta cK th3 Li#t Gc khi n;o sE 56ng 7C File chInh U2c hFn 7; sE 56ng
7C FileInfo n#u ch$ng cong ch4a nh?ng ChFng th4c tFng tW .i nhau. ThSt ra hai 7C n;V
cK nhi`u sW kh2c Li/t. +C File ch4a tht cD c2c ChFng th4c tdnhv th9& .;o K 7C File tW eng
ki3& tra C'r&ission tr9n &et tSC tin. Trong khi K n#u &un 5ong 7C FileInfo th ChDi tBo
th3 hi/n ca 7C n;V. N#u &un &f &et tSC tin chb &et 7mn th tt nhht 7; sE 56ng 7C Filev
cn n#u ch$ng ta t ch4c .i/c sE 56ng tSC tin nhi`u 7mn L9n trong chFng trnhv tt nhht 7; ta
5ong 7C FileInfo. [oac n#u kh>ng ch_c ch_n c2ch sE 56ng th ch$ng ta cK th3 sE 56ng 7C
FileInfo.
Rit *7o "Ht tT- tin *`n I=n
*2ch tt nhht 3 n_& .?ng c2ch th4c 7;& .i/c .i tSC tin 7; ch$ng ta sH L_t taV .;o t&
hi3u chFng trnh. Trong Chmn n;V ch$ng ta sH t& hi3u &et .I 56 &inh hOa .i/c tBo ra &et
tSC tin .qn LDn ri sau K .i#t 7Bi th>ng tin .;o nK.
89 d: 12(w) 8i@t d #iI> N-o tp tin Njn *n(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
//writing.cs:: vit vo mt tp tin vn bn
namespace ProgrammingCSharp
{
using System;
using System.IO;
public class Tester
{
public static void Main(String[] args)
{
if (args.Length < 1)
{
Console.WriteLine("Phai nhap ten tap tin.);
}
else
{
StreamWriter myFile = File.CreateText( args[0]);
myFile.WriteLine("Khong co viec gi kho);
myFile.WriteLine("Chi so long khong ben);
myFile.WriteLine("Dao nui va lap bien);
myFile.WriteLine("uyet chi at lam nen);
for(int i=0; i < 10; i++)
{
C.cLpC<?@.NET
)-N
NgnNgLpTrnhC#
myFile.Write("{0} ,i);
}
myFile.Close();
}
}
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
"hi chBV chFng trnh tr9n ch$ng ta ChDi cung chC t9n ca tSC tin Gc tBo &iv n#u kh>ng
cung chC th chFng trnh sH kh>ng thWc hi/n .i/c tBo tSC tin. ZiD sE ch$ng ta cK cung chC
&et tha& s 5ng 7/nh cho chFng trnh th &et tSC tin .qn LDn &i Gc tBo ra cK nei 5ung
nh sauu
Khong co viec gi kho
Chi so long khong ben
Dao nui va lap bien
uyet chi at lam nen
0 1 2 3 4 5 6 8 9
Trong chFng trnh tr9n kh>ng thWc hi/n .i/c UE 7] ngoBi 7/. ^i`u n;V 5cn #n chFng trnh
cK th3 Ch2t sinh ra nh?ng ngoBi 7/ .; nh?ng ngoBi 7/ n;V kh>ng Gc UE 7]. ^PV 7; c2ch 7SC
trnh kh>ng ttv n9n V9u cmu ngi Oc n9n th9& c2c UE 7] ngoBi 7/ .;o chFng trnh tr9nv
ngoBi 7/ n;V cng tFng tW nh ngoBi 7/ trong .I 56 trc.
Nh ch$ng ta thhV h;& Main cK tha& s .; tha& s n;V sH Gc nhSn th>ng !ua 5ng 7/nhv
trong c2c .I 56 trcv chFng trnh nhSn tha& s 5ng 7/nh th>ng !ua 7C Environmentv cn
f PV ta khai L2o tha& s 5ng 7/nh trWc ti#C cho chFng trnh. png 7/nh mu ti9n ca h;&
Main() 7; ki3& tra s tha& s nhSC .;ov n#u kh>ng cK tha& s n;o chFng trnh sH Uuht ra
th>ng L2o 7; kh>ng cK t9n tSC tin .; k#t th$c chFng trnh.
Trong trng hGC cung chC tha& s mV chFng trnh sH thWc hi/n .i/c tBo &i tSC tin.
1hFng th4c CreateText ca 7C File Gc gOi 3 tBo ra &et i tGng StreamWriter &i gOi
7; myFile. Tha& s Gc truV`n cho h;& 7; t9n ca tSC tin sH Gc tBo. "#t !uD cui cong ca
5ng 7/nh n;V 7; tBo ra &et tSC tin .qn LDn &i. p? 7i/u s4 Gc a .;o tSC tin th>ng !ua
StreamWriter .i th3 ca nK 7; myFile.
2hi +h3u N#u &et tSC tin hi/n h?u .i cong t9n nh tSC tin &; ch$ng ta tBo ra th tSC tin
c sH Gc .i#t chngv t4c 7; 5? 7i/u L9n trong tSC tin c sH L: UKa &ht.
[nh sau &inh hOa .i/c thWc hi/n tBo tSC tin .; a 5? 7i/u .;o
C.cLpC<?@.NET
)--
NgnNgLpTrnhC#
&nh 12(F ) M t* thO+ hiIn tLo tp tin N- =;a d #iI> N-o
"hi &et 7ung Gc thi#t 7SC .; chb #n &et tSC tinv ch$ng ta cK th3 .i#t .;o trong 7ung .;
nK sH Gc .i#t .;o tSC tinu
myFile.WriteLine("Khong co viec gi kho);
png 7/nh tr9n .i#t &et chu\i .;o trong tSC tinv .i/c .i#t n;V ging nh 7; .i#t ra &;n hnh
conso7'. Nhng f PV 7; Gc .i#t ra thi#t L: kh2cv t4c 7; ra tSC tin. Sau khi thWc hi/n to;n Le
c>ng .i/cv cmn thi#t ChDi Kng 7ung 7Bi LYng c2ch gOi ChFng th4c Close.
]Qc tT- tin *`n I=n
^Oc 5? 7i/u tJ tSC tin .qn LDn cng tFng tW nh .i/c .i#t th>ng tin .;o nK. I 56 &inh
hOa ti#C sau PV thWc hi/n .i/c Oc tSC tin &; ch$ng ta z tBo ra tJ chFng trnh &inh hOa
12.= trc. ^PV 7; chFng trnh Oc tSC tin .qn LDn.
89 d: 12(x) dB+ mYt tp tin Njn *n(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
using System.IO;
namespace ProgrammingCSharp
{
public class Tester
{
public static void Main(string[] args)
{
if ( args.Length < 1)
{
Console.WriteLine("Phai nhap ten tap tin);
}
else
{
C.cLpC<?@.NET
)-0
pata to
L' (ritt'n
arg0
&V%i7' i Str'a&~rit'r
pisk fi7'
NgnNgLpTrnhC#
string buffer;
StreamReader myFile = File.OpenText( args[0]);
while ( (buffer = myFile.ReadLine()) !=null)
{
Console.WriteLine(buffer);
}
myFile.Close();
}
}
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
N#u ch$ng ta nhSC $ng t9n ca tSC tin .Ja tBo trong .I 56 trc th k#t !uD chFng trnh
thWc hi/n nh sauu
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
Ghong co $iec gi kho
Chi so !ong khong ben
Dao nui $a !a& bien
Ku'et chi at !a# nen
0 1 ) 3 * 5 + 6 7 9
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
N#u chFng trnh Gc cung chC mV t9n tSC tin th nK sH L_t mu thWc hi/n .i/c Oc th>ng
tin. ^mu ti9n 7; khai L2o &et chu\i 5ong 7;& ch\ 7u th>ng tin Oc tE tSC tin ra. ^3 &f tSC tin
.qn LDn th ChFng th4c OpenText Gc gOi. 1hFng th4c n;V Gc truV`n .;o t9n ca tSC
tin .qn LDn cmn &f. Met 7mn n?a &et 7ung t9n myFile Gc tBo ra g_n .i tSC tin z chov
7ung n;V cK ki3u 7; StreamReader. 1hFng th4c ReadLine() ca myFile thWc hi/n .i/c Oc
tJng 5ng trong tSC tin .; sau K Gc Uuht ra &;n hnh conso7'. i/c Oc n;V k#t hGC .i
.i/c ki3& tra 7; z Oc #n cui tSC tin chav n#u Oc #n cui tSC tinv t4c 7; h;& ReadLine{}
trD .` chu\i r\ngv 7$c n;V chFng trnh sH k#t th$c .i/c Oc. *ui cong h;& Close Gc gOi
3 Kng tSC tin 7Biv .; chFng trnh chh& 54t.
Trong chFng trnh n;V cng kh>ng UE 7] ngoBi 7/v n#u tSC tin kh>ng tn tBi chFng trnh sH
Ch2t sinh ra ngoBi 7/ .; ngoBi 7/ n;V kh>ng Gc UE 7]. ^` ngh: ngi Oc n9n a .;o c2c
oBn UE 7] ngoBi 7/ tFng tW nh .I 56 12.0
Rit th9ng tin nh6 -hPn *7o tT- tin
N#u ch$ng ta sE 56ng &et tSC tin .qn LDnv th khi ch$ng ta 7u 5? 7i/u ki3u s th ChDi
thWc hi/n .i/c chuV3n i sang 5Bng chu\i k] tW 3 7u .;o trong tSC tin .qn LDn .; khi 7hV ra
C.cLpC<?@.NET
)-=
NgnNgLpTrnhC#
ta cng 7hV Gc gi2 tr: chu\i k] tW 5o K ta ChDi chuV3n sang 5Bng s. ^>i khi ch$ng ta
&un cK c2ch th4c n;o K tt hFn 3 7u trWc ti#C gi2 tr: .;o trong tSC tin .; sau K Oc trWc
ti#C gi2 tr: ra tJ tSC tin. I 56 khi .i#t &et s 7Gng 7n c2c s int'g'r .;o trong tSC tin nh 7;
nh?ng s nguV9nv th khi K ta cK th3 Oc c2c gi2 tr: n;V ra nh 7; s int'g'r. Trng hGC n#u
ch$ng Gc .i#t .;o tSC tin .i 5Bng .qn LDnv th khi Oc ra ta ChDi Oc ra .qn LDn .; ChDi
chuV3n &\i gi2 tr: tJ &et chu\i #n c2c s int'g'r. Tt hFn .i/c ChDi thWc hi/n th9& c2c
Lc chuV3n iv ta cK th3 g_n &et ki3u 7ung nh: ChPn BinaryStream .;o trong &et tSC tinv
ri sau K Oc .; ghi th>ng tin nh: ChPn tJ 7ung n;V.
Ti#C th'o ta sH U'& &et .I 56 &inh hOa .i/c Oc .i#t 5? 7i/u nh: ChPn .;o &et tSC tin. Mac
5o trong chFng trnh n;V thWc hi/n .i/c .i#t 100 gi2 tr: int'g'r .;o trong &et tSC tin nhng
cK th3 5 5;ng .i#t Lht c4 ki3u 5? 7i/u n;o kh2c.
2hi +h3u Th>ng tin nh: ChPn 7; th>ng tin z Gc :nh 5Bng ki3u 7u tr? 5? 7i/u.
89 d: 12(y) 8i@t N-o mYt tp tin nhM phUn(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
//binarywriter.cs
using System;
using System.IO;
namespace ProgrammingCSharp
{
public class Tester
{
public static void Main(string[] args)
{
if ( args.Length < 1)
{
Console.WriteLine("Phai nhap ten tap tin!);
}
else
{
FileStream myFile = new FileStream( args[0], FileMode.CreateNew);
BinaryWriter bwFile = new BinaryWriter(myFile);
for (int i=0; i < 100; i++)
{
bwFile.Write(i);
}
bwFile.Close();
myFile.Close();
}
C.cLpC<?@.NET
)-A
NgnNgLpTrnhC#
}
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
*ng tFng tW nh c2c .I 56 tr9n th t9n tSC tin Gc a .;o tha& s 5ng 7/nh. N#u chFng
trnh Gc nhSC c2c tha& s mV v chFng trnh sH thWc hi/n .i/c .i#t th>ng tin nh: ChPn
.;o trong tSC tinv .; kh>ng cK outCut ra &;n hnh conso7'. N#u ch$ng ta &f tSC tin .; U'&
th chb thhV c2c k] tW &f reng WFc th3 hi/nv sH kh>ng thhV nh?ng s Oc Gc.
Trong chFng trnh n;V cng cha thWc hi/n .i/c UE 7] c2c ngoBi 7/. N#u thWc hi/n .i/c .i#t
th>ng tin .;o &et tSC tin z hi/n h?uv th &et ngoBi 7/ sH Gc Ch2t sinh khi thWc hi/n 7/nhu
FileStream myFile = new FileStream( args[0], FileMode.CreateNew);
Trong chFng trnh 12.T n;V thWc hi/n .i/c tBo .; &f tSC tin kh2c .i .i/c &f tSC tin .qn
LDn. +/nh tr9n tBo &et i tGng FileStream gOi 7; myFile. +ung n;V Gc g_n .i tSC tin
th>ng !ua Le khfi 5Wng. Tha& s mu ti9n ca Le khfi 5Wng 7; t9n ca tSC tin &; ch$ng ta
tBo {args[0]}v tha& s th4 hai 7; &o5' &; ch$ng ta &f. Tha& s n;V 7; gi2 tr: ki3u 7i/t k9
%i7'Mo5'v trong chFng trnh th 5o ch$ng ta thWc hi/n .i/c tBo &i 3 ghi n9n sE 56ng gi2
tr: FileMode.CreateNew. 8Dng 12.) sau 7i/t k9 nh?ng &o5' gi2 tr: kh2c trong ki3u 7i/t k9
FileMode.
Gi< trc -cn4 ng4u6
Append Mf &et tSC tin hi/n h?u hoac tBo &et tSC tin &i
Create TBo &et tSC tin &i. N#u &et tSC tin z hi/n h?uv nK sH
L: UKa .; &et tSC tin &i sH Gc tBo ra .i cong t9n.
CreateNew TBo &et tSC tin &i. N#u &et tSC tin z tn tBi th &et
ngoBi 7/ sH Gc Ch2t sinh.
Open Mf tSC tin hi/n h?u.
OpenOrCreate Mf tSC tin haV tBo tSC tin &i n#u tSC tin cha tn tBi
Truncate Mf &et tSC tin hi/n h?u .; UKa nei 5ung ca nK.
4*ng 12(G) 2i, trM +7a Fi#'Mod'(
Sau khi tBo ra FileStreamv ch$ng ta cmn thi#t ChDi thi#t 7SC 3 nK 7;& .i/c .i 5? 7i/u nh:
ChPn. png 7/nh ti#C th'ou
BinaryWriter bwFile = new BinaryWriter(myFile);
png n;V thi#t 7SC &et ki3u .i#t 5? 7i/u nh: ChPn .;o trong 7ung LYng c2ch khai L2o ki3u
BinaryWrite. ^i tGng th3 hi/n ca BinaryWrite 7; bwFile Gc tBo ra. myFile Gc truV`n
.;o Le khfi 5Wng BinaryWritev nK sH g_n bwFile .i myFile.
for (int i=0; i < 100; i++)
{
bwFile.Write(i);
C.cLpC<?@.NET
)-T
NgnNgLpTrnhC#
}
ng 7aC n;V thWc hi/n .i/c .i#t trWc ti#C gi2 tr: int'g'r .;o trong BinaryWrite bwFile LYng
c2ch sE 56ng ChFng th4c Write. p? 7i/u Gc .i#t cK th3 7; ki3u 5? 7i/u ac Li/t kh2c.
Trong chFng trnh n;V th sE 56ng gi2 tr: int'g'r. "hi thWc hi/n Uong c2c c>ng .i/c .i#t .;o
tSC tinv ch$ng ta cmn thi#t ChDi Kng 7ung &; ch$ng tD z &f.
]Qc th9ng tin nh6 -hPn tF tT- tin
Trong Chmn trc ch$ng ta z thWc hi/n .i/c .i#t th>ng tin nh: ChPn .;o trong tSC tinv .;
LPV gi ch$ng ta &ong &un Gc Oc c2c th>ng tin z ghi .;o trong tSC tin. i/c Oc th>ng
tin cng kh2 Fn giDn nh 7; .i/c .i#t .;o. *hFng trnh 12.10 sau &inh hOa cho c>ng .i/c
n;V.
89 d: 12(1$) dB+ thng tin nhM phUn(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
// BinaryRead.cs: Doc thong tin tu file nhi phan
namespace ProgrammingCSharp
{
using System;
using System.IO;
public class Tester
{
public static void Main( String[] args)
{
if ( args.Length < 1)
{
Console.WriteLine("Phai nhap ten tap tin);
}
else
{
FileStream myFile = new FileStream( args[0], FileMode.Open);
BinaryReader brFile = new BinaryReader(myFile);
// dc d liu
Console.WriteLine("Dang doc tap tin....);
while (brFile.PeekChar() != -1)
{
Console.Write("<{0}>, brFile.ReadInt32());
}
Console.WriteLine("....Doc xong);
brFile.Close();
C.cLpC<?@.NET
)00
NgnNgLpTrnhC#
myFile.Close();
}
}
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
Dang doc ta& tin....
S00 S10 S)0 S30 S*0 S50 S+0 S60 S70 S90 S100 S110 S1)0 S130 S1*0 S150 S1+0
S160
S170 S190 S)00 S)10 S))0 S)30 S)*0 S)50 S)+0 S)60 S)70 S)90 S300 S310 S3)0
S330
S3*0 S350 S3+0 S360 S370 S390 S*00 S*10 S*)0 S*30 S**0 S*50 S*+0 S*60 S*70
S*90
S500 S510 S5)0 S530 S5*0 S550 S5+0 S560 S570 S590 S+00 S+10 S+)0 S+30 S+*0
S+50
S++0 S+60 S+70 S+90 S600 S610 S6)0 S630 S6*0 S650 S6+0 S660 S670 S690 S700
S710
S7)0 S730 S7*0 S750 S7+0 S760 S770 S790 S900 S910 S9)0 S930 S9*0 S950 S9+0
S960
S970 S990 ....Doc (ong5
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
i 4ng 56ng n;Vv ch$ng ta cK th3 Oc 5? 7i/u &; ch$ng ta z .i#t trong .I 56 trc. Trong .I
56 n;V ch$ng ta tBo ra 7ung FileStream. +$c n;Vv &o5' thao t2c ca tSC tin Gc sE 56ng 7;
&o5' FileMode.Open. Sau K ch$ng ta thWc hi/n .i/c g_n 7ung n;V .i 7ung BinaryReader
trong 5ng ti#C sauv 7ung n;V sH gi$C cho ch$ng ta Oc th>ng tin nh: ChPnu
FileStream myFile = new FileStream( args[0], FileMode.Open);
BinaryReader brFile = new BinaryReader(myFile);
Sau khi tBo ra 7ung gi$C cho .i/c Oc th>ng tin nh: ChPn tJ tSC tinv chFng trnh L_t mu Oc
th>ng !ua .ng 7aCu
while (brFile.PeekChar() != -1)
{
Console.Write("<{0}>, brFile.ReadInt32());
}
PV cK &et .;i sW kh2c nhQv ChFng th4c PeekChar ca 7C BinaryReader Gc sE 56ng.
1hFng th4c n;V sH 7hV k] tW k# ti#C trong 7ung. N#u k] tW k# ti#C 7; cui tSC tin th gi2 tr: i1
Gc trD .`. NgGc 7Biv th k] tW k# ti#C Gc trD .` "hi k] tW k# ti#C kh>ng ChDi k] tW cui
tSC tin th 7/nh L9n trong .ng 7aC sH Oc &et s int'g'r tJ i tGng BinaryStream Lr%i7'.
C.cLpC<?@.NET
)01
NgnNgLpTrnhC#
1hFng th4c Gc sE 56ng 3 Oc &et s nguV9n 7; ReadInt32v ch$ng ta sE 56ng ki3u t9n
ca %ra&'(ork tt hFn 7; ki3u 5o *@ a ra. N9n nh rYngv tht cD nh?ng 7C tJ %ra&'(ork
i`u Gc gOi Lfi ng>n ng? *@ .; ch$ng kh>ng ChDi 7; &et Le ChSn ca ng>n ng? *@.
Nh?ng 7C n;V cn Gc sE 56ng tt Lfi nh?ng ng>n ng? kh2c *@.
Ngo;i ra 7C BinaryReader cn cK nh?ng ChFng th4c kh2c 3 thWc hi/n .i/c Oc c2c ki3u 5?
7i/u kh2c nhau. Nh?ng ChFng th4c Oc n;V Gc sE 56ng cong .i c2ch &; ReadInt32 Gc
sE 56ng trong chFng trnh. 8Dng 12.N sau 7i/t k9 &et s ChFng th4c 5ong 3 Oc c2c ki3u
5? 7i/u.
P4/Nng t4`c t ng4u6
Read ^Oc nh?ng k] tW .; chuV3n .: trI Oc sang .: trI ti#C th'o.
1hFng th4c n;V Gc nBC chng g& ) ChFng th4c.
ReadBoolean ^Oc &et gi2 tr: boolean tJ 7ung hi/n thi .; chuV3n .: trI Oc
sang &et LVt'.
ReadByte ^Oc LVt' k# ti#C tJ 7ung hi/n thi .; chuV3n .: trI Oc sang 1
LVt'.
ReadBytes ^Oc n LVt' tJ 7ung hi/n thi sang &et &Dng LVt' .; chuV3n .:
trI Oc sang n LVt'.
ReadChar ^Oc .: trI k# ti#C trong 7ung hi/n h;nh .; chuV3n .: trI Oc ca
7ung th'o sau sE 56ng &z hKa .; k] tW U2c :nh Gc Oc tJ
7ung.
ReadChars ^Oc n k] tW tJ 7ung hi/n h;nh .;o &et &Dng n k] tW. ;
chuV3n .: trI Oc ca 7ung th'o sau sE 56ng &z hKa .; k] tW
U2c :nh Gc Oc tJ 7ung.
ReadDecimal ^Oc gi2 tr: decimal .; chuV3n .: trI Oc sang 10 LVt'.
ReadDouble ^Oc gi2 tr: thWc A LVt' .; chuV3n .: trI Oc sang A LVt'.
ReadInt16 ^Oc gi2 tr: 2 LVt' int'g'r cK 5hu .; chuV3n .: trI Oc sang 2
LVt'.
ReadInt32 ^Oc gi2 tr: N LVt' int'g'r cK 5hu .; chuV3n .: trI Oc sang N
LVt'.
ReadInt64 ^Oc gi2 tr: A LVt' int'g'r cK 5hu .; chuV3n .: trI Oc sang A LVt'
ReadSByte ^Oc &et sign'5 LVt' tJ 7ung .; chuV3n .: trI Oc sang 1 LVt'.
ReadSingle ^Oc gi2 tr: thWc N LVt' tJ 7ung .; chuV3n .: trI Oc sang N LVt'.
ReadString ^Oc &et chu\i tJ 7ung. *hu\i Gc c :nh chi`u 5;i trc.
; Gc &z hKa &\i 7mn nh 7; s nguV9n = bit.
ReadUInt16 ^Oc gi2 tr: 2iLVt' unsign'5 int'g'r tJ 7ung. SE 56ng &z hKa
th4 tW nhQ f cui {7itt7' 'n5ian 'nco5ing}. ; chuV3n .: trI hi/n
h;nh sang 2 LVt'.
C.cLpC<?@.NET
)02
NgnNgLpTrnhC#
ReadUInt64 ^Oc AiLVt' unsign'5 int'g'r tJ 7ung hi/n h;nh .; chuV3n sang
A LVt'.
4*ng 12(G) C,+ ph;<ng thP+ =B+ +7a 4inary['ad'r(
%Pu hSi *7 tr= ,i
CU> hVi 1u *2c ng>n ng? Gc h\ trG Lfi .NET ChDi tuPn th th'o !uV t_c n;o kh>ng
0r* #Wi 1) Nh; =J trnh -y %n tr%nf +,+ ngn ng (N/0 ph*i t>Un th7 th'o A>y =Mnh +h>ng
=i +6 thi hoLt =Yng tr%n nDn +7a (N/0( Nhng A>y =Mnh n-y =;H+ gBi #- Common Lang>ag'
Sp'+iTi+ation \CLS]( CLS =;a ra nhng 1ii> d #iI> +h>ng N- +,+ tp #>t =i thao t,+ tr%n
1ii> d #iI> n-yf CLS +ho phqp tLo ra mYt mi tr;Wng thO+ thi +h>ng m- 1hng +.n A>an
tUm =@n t5ng ngn ng =;H+ sn d:ng( LHi 9+h +7a CLS #- mJ ng>Kn =;H+ Ni@t thcng nhXt =i
A>*n #tf mJ ng>Kn =;H+ Ni@t trong ngn ng n-y +6 thi =;H+ sn d:ng gi mYt ngn ng
1h,+(
CU> hVi 2u N#u &un t& hi3u .` c2c 7C Gc cung chC Lfi .NET &et c2ch chi ti#t th ChDi
t& f Pu
0r* #Wi 2) di tm hii> +hi ti@t +,+ #op +7a (N/0 th +h3ng ta +6 thi tm trong th; NiIn trO+
t>y@n +7a Mi+rosoTt +6 t%n #- MSDN n#in'f th; NiIn n-y +hPa tXt +* +,+ thng tin #i%n A>an
=@n (N/0 Fram'wor1 m- ng;Wi hB+ +.n A>an tUm( 0h; NiIn n-y th;Wng _>y%n =;H+ +p
nht N- +hPa nhng thng tin moi nhXt ND +,+ phi%n *n +7a (N/0(
%Pu hSi th5"
CU> hVi 1) di tr>y _>Xt thWi gian +7a =Kng hK hI thcng +h3ng ta ph*i dCng #op n-ou
CU> hVi 2) 0hng tin ND m,y t9nh +6 thi =;H+ tr>y _>Xt thng A>a #op n-ou
CU> hVi F) 0ham sc dEng #Inh #- gu L-m th@ n-o =i #Xy =;H+ tham sc dEng #Inhu
CU> hVi G) Lop thao t,+ +,+ phqp to,n hB+ +< *nu Ch3ng ta +6 thi tLo thi hiIn +7a #op n-y
hay 1hngu
CU> hVi Q) Lop thao t,+ tp tin Fi#' +hPa trong nam'spa+' n-ou C,+ thao t,+ +h9nh =;H+
thO+ hiIn tr%n tp tinu
CU> hVi v) Lop n-o +>ng +Xp +,+ thng tin ND tp tinu C,+ ph;<ng thP+ +h9nh +7a #op n-yu
CU> hVi w) L>Kng #- gu PhUn iIt gia tp tin N- #>Kngu
CU> hVi x) C6 mXy +,+h thP+ tLo tp tinu Cho i@t thP tO =B+ +7a mYt tp tinu
CU> hVi y) SO 1h,+ nha> gia #op Fi#' N- Fi#'lnTou ?hi n-o th sn d:ng #op Fi#' tct h<n #-
sn d:ng Fi#'lnTou
CU> hVi 1$) ?hi tLo mYt tp tin moi trCng Noi t%n +7a mYt tp tin +m trong +Cng mYt NM tr9 th;
m:+ th +h>yIn g _*y rau
CU> hVi 11) N@> m>cn Ni@t d #iI> =J =Mnh dLng nh; #- 1ii> sc th dCng +,+h Ni@t N-o tp tin
dLng n-ou
47i tT-
C.cLpC<?@.NET
)0)
NgnNgLpTrnhC#
4-i tp 1) 8i@t mYt +h;<ng trnh minh hBa NiI+ tr>y _>Xt thng tin hI thcng +7a m,y t9nh
=ang sn d:ng( 0hng tin n-y ao gKm) t%n m,y t9nhf hI =iD> h-nhf Y nhof =ea +Png(((
4-i tp 2) 8i@t +h;<ng trnh minh hBa mYt m,y t9nh +, nhUn +ho phqp thO+ hiIn +,+ phqp
to,n +< *n( Ch;<ng trnh hiIn ra mYt m'n> +,+ #Inh N- mai #Inh =;H+ g,n +ho mYt sc) nh;
+ng th sc 1f tr5 sc 2f nhUn Ff((( Cho phqp ng;Wi dCng +hBn mYt #Inh thng A>a nhp N-o sc
t;<ng Png( Sa> =6 +ho ng;Wi dCng nhp N-o t5ng to,n hLng rKi thO+ hiIn phqp to,n N- +>ci
+Cng in 1@t A>* ra m-n hnh(
4-i tp F) 8i@t +h;<ng trnh +ho phqp _'m thng tin ND mYt tp tin( Ch;<ng trnh +ho ng;Wi
dCng nhp N-o t%n tp tin rKi sa> =6 #.n #;Ht hiin thM +,+ thng tin nh;) th>Y+ t9nh tp tinf
ng-y giW tLo #pf 19+h th;o+ tp tin(((
4-i tp G) 8i@t +h;<ng trnh _'m tp tin Njn *n gicng nh; #Inh typ' +7a DS( Ch;<ng trnh
+ho phqp ng;Wi dCng nhp t%n tp tin thng A>a tham sc dEng #Inh( N@> ng;Wi dCng 1hng
nhp A>a tham sc dEng #Inh th y%> +.> nhp N-o(
4-i tp Q) 8i@t +h;<ng trnh +ho phqp ng;Wi dCng nhp N-o mYt m*ng sc ng>y%n( Sa> =6 srp
_@p m*ng n-y th'o thP tO tjng d.n rKi #;> m*ng N-o mYt tp tin tr%n =ea Noi dLng nhM phUn(
C.cLpC<?@.NET
)0N
NgnNgLpTrnhC#
C4/Nng 1
$ Lt NGUT L
P4<t sin4 HI gqt gi ngo:i )C
C%@ )Cn4 t4ro\
C%@ )Cn4 c6tc4
C%@ )Cn4 fin6))&
N4ng X.i t/0ng ngo:i )C
T:o ribng c<c ngo:i )C
P4<t sin4 ):i ngo:i )C
C%@ 4ji k gIi tJ+
Ng>n ng? *@ cng ging nh Lht c4 ng>n ng? hng i tGng kh2cv cho ChgC UE 7]
nh?ng 7\i .; c2c i`u ki/n kh>ng Lnh thng .i nh?ng ngoBi 7/. NgoBi 7/ 7; &et i tGng
Kng gKi nh?ng th>ng tin .` sW c ca &et chFng trnh kh>ng Lnh thng.
Met i`u !uan trOng 3 ChPn chia gi?a Lugv 7\iv .; ngoBi 7/. Met Lug 7; &et 7\i 7SC trnh
cK th3 Gc sEa ch?a trc khi &z ngun Gc chuV3n giao. Nh?ng ngoBi 7/ th kh>ng Gc
LDo ./ .; tFng ChDn .i nh?ng Lug. Mac 5o &et Lug cK th3 7; nguV9n nhPn sinh ra ngoBi 7/v
ch$ng ta cng kh>ng 5Wa .;o nh?ng ngoBi 7/ 3 UE 7] nh?ng Lug trong chFng trnhv tt hFn
7; ch$ng ta n9n sEa ch?a nh?ng Lug n;V.
Met 7\i cK nguV9n nhPn 7; 5o ChIa h;nh eng ca ngi sE 56ng. I 56v ngi sE 56ng
nhSC .;o &et s nhng hO 7Bi nhSC .;o k] tW ch? c2i. Met 7mn n?av 7\i cK th3 7;& Uuht hi/n
ngoBi 7/v nhng ch$ng ta cK th3 ngqn ngJa i`u n;V LYng c2ch L_t gi? 7\i .i &z hGC 7/.
Nh?ng 7\i cK th3 Gc o2n trc .; Gc ngqn ngJa.
ThS& chI n#u ch$ng ta UKa tht cD nh?ng Lug .; 5W o2n tht cD c2c 7\i ca ngi 5ongv
ch$ng ta cng cK th3 gaC ChDi nh?ng .hn ` kh>ng &ong Giv nh 7; Uuht hi/n trBng th2i
thi#u Le nh {out of &'&orV}v thi#u t;i nguV9n h/ thngv... nh?ng nguV9n nhPn n;V cK th3 5o
c2c chFng tr;nh kh2c cong hoBt eng Dnh hfng #n. *h$ng ta kh>ng th3 ngqn ngJa c2c
ngoBi 7/ n;Vv nhng ch$ng ta cK th3 UE 7] ch$ng 3 ch$ng kh>ng th3 7;& tn hBi #n chFng
trnh.
"hi &et chFng trnh gaC &et tnh hung ngoBi 7/v nh 7; thi#u Le nh th nK sH tBo &et
ngoBi 7/. "hi &et ngoBi 7/ Gc tBo rav .i/c thWc thi ca c2c ch4c nqng hi/n h;nh sH L: tr'o
cho #n khi n;o .i/c UE 7] ngoBi 7/ tFng 4ng Gc t& thhV.
X/L:Ngo,iL4
)0-
NgnNgLpTrnhC#
^i`u n;V cK nghda rYng n#u ch4c nqng hoBt eng hi/n h;nh kh>ng thWc hi/n .i/c UE 7]
ngoBi 7/v th ch4c nqng n;V sH L: chh& 54t .; h;& gOi sH nhSn sW thaV i #n .i/c UE 7]
ngoBi 7/. N#u h;& gOi n;V kh>ng thWc hi/n .i/c UE 7] ngoBi 7/v ngoBi 7/ sH Gc UE 7] s&
Lfi *+,v i`u n;V 5cn #n chFng trnh ca ch$ng ta sH k#t th$c.
Met trnh UE 7] ngoBi 7/ 7; &et khi 7/nh chFng trnh Gc thi#t k# UE 7] c2c ngoBi 7/ &;
chFng trnh Ch2t sinh. E 7] ngoBi 7/ Gc thWc thi trong trong cPu 7/nh catch. Met c2ch 7]
tfng th n#u &et ngoBi 7/ Gc L_t .; Gc UE 7]v th chFng trnh cK th3 sEa ch?a Gc .hn
` .; ti#C t6c thWc hi/n hoBt eng. ThS& chI n#u chFng trnh kh>ng ti#C t6cv LYng .i/c L_t
gi? ngoBi 7/ ch$ng ta cK cF hei 3 in ra nh?ng th>ng i/C cK ] nghda .; k#t th$c chFng trnh
&et c2ch r r;ng.
N#u oBn chFng trnh ca ch$ng ta thWc hi/n &; kh>ng !uan tP& #n Lht c4 ngoBi 7/
n;o &; ch$ng ta cK th3 gaC {nh khi giDi ChKng t;i nguV9n &; chFng trnh Gc chC Ch2t}v
ch$ng ta cK th3 at oBn &z n;V trong khi finall%v khi K nK sH ch_c ch_n sH Gc thWc hi/n
thS& chI ngaV cD khi cK &et ngoBi 7/ Uuht hi/n.
.h/t sinh *7 I^t gi: ngo<i ,+
Trong ng>n ng? *@v ch$ng ta chb cK th3 Ch2t sinh {thro(} nh?ng i tGng c2c ki3u 5?
7i/u 7; System.Exceptionv haV nh?ng i tGng Gc 5cn Uuht tJ ki3u 5? 7i/u n;V.
Na&'sCac' System ca *+, ch4a &et s c2c ki3u 5? 7i/u UE 7] ngoBi 7/ &; ch$ng ta cK th3
sE 56ng trong chFng trnh. Nh?ng ki3u 5? 7i/u ngoBi 7/ n;V Lao g& ArgumentNull-
Exceptionv InValidCastExceptionv .; OverflowExceptionv cng nh nhi`u 7C kh2c n?a.
%Pu ,+nh thro$
^3 Ch2t tIn hi/u &et sW kh>ng Lnh thng trong &et 7C ca ng>n ng? *@v ch$ng ta Ch2t
sinh &et ngoBi 7/. ^3 7;& Gc i`u n;Vv ch$ng ta sE 56ng tJ khKa throw. png 7/nh sau tBo
ra &et th3 hi/n &i ca System.Exception .; sau K thro( nKu
throw new System.Exception();
"hi Ch2t sinh ngoBi 7/ th ngaV t4c kh_c sH 7;& ngJng .i/c thWc thi trong khi *+, sH t&
ki#& &et trnh UE 7] ngoBi 7/. N#u &et trnh UE 7] ngoBi 7/ kh>ng Gc t& thhV trong
ChFng th4c hi/n thiv th *+, ti#C t6c t& trong ChFng th4c gOi cho #n khi n;o t& thhV.
N#u *+, trD .` 7C Main() &; kh>ng t& thhV Lht c4 trnh UE 7] ngoBi 7/ n;ov th nK sH k#t
th$c chFng trnh.
89 d: 1F(1) 0hrow ngoLi #I(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
namespace ProgrammingCSharp
{
using System;
public class Test
{
X/L:Ngo,iL4
)00
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
public static void Main()
{
Console.WriteLine("Enter Main....);
Test t = new Test();
t.Func1();
Console.WriteLine("Exit Main...);
}
public void Func1()
{
Console.WriteLine("Enter Func1...);
Func2();
Console.WriteLine("Exit Func1...);
}
public void Func2()
{
Console.WriteLine("Enter Func2...);
throw new System.Exception();
Console.WriteLine("Exit Func2...);
}
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
:nter Main....
:nter -unc1...
:nter -unc)...
:(ce&tion occurred: S'ste#.:(ce&tion: Bn e(ce&tion o" t'&e S'ste#.:(ce&tion
was throw.
at Erogra##ingFCShar&.est.-unc)./ in ... e(ce&tion01.cs:!ine )+
at Erogra##ingFCShar&.est.-unc1./ in ... e(ce&tion01.cs:!ine )0
at Erogra##ingFCShar&.est.Main./ in ... e(ce&tion01.cs:!ine 1)
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
I 56 &inh hOa Fn giDn n;V .i#t ra &;n hnh conso7' th>ng tin khi nK nhSC .;o trong &et
h;& .; chuMn L: i ra tJ &et h;&. [;& Main() tBo th3 hi/n &i ca ki3u T'st .; sau K gOi
h;& Func1{}. Sau khi in th>ng i/C s/nt'r F>n+1tv h;& Func1{} n;V gOi h;& Func2{}. [;&
Func2{} in ra th>ng i/C mu ti9n .; Ch2t sinh &et ngoBi 7/ ki3u System.Exception. i/c thWc
thi sH ngng ngaV t4c kh_cv .; *+, sH t& ki#& trnh UE 7] ngoBi 7/ trong h;& Func2{}. po
kh>ng t& thhV f PVv *+, ti#C t6c .;o stack 7hV h;& z gOi trc t4c 7; Func1 .; t& ki#&
X/L:Ngo,iL4
)0=
phat sinh ngoai le
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
trnh UE 7] ngoBi 7/. Met 7mn n?a trong Func1 cng kh>ng cK oBn UE 7] ngoBi 7/. ; *+, trD
.` h;& Main. TBi h;& Main cng kh>ng cKv n9n *+, sH gOi trnh &ac :nh UE 7] ngoBi 7/v
.i/c n;V Fn giDn 7; Uuht ra &et th>ng i/C 7\i.
%Pu ,+nh catch
Trong *@v &et trnh UE 7] ngoBi 7/ haV &et oBn chFng trnh UE 7] c2c ngoBi 7/ Gc gOi 7;
&et khi catch .; Gc tBo ra .i tJ khKa catch.
Trong .I 56 1).2 sauv cPu 7/nh throw Gc thWc thi L9n trong khi tr%v .; &et khi catch
Gc sE 56ng 3 c>ng L rYng &et 7\i z Gc UE 7].
89 d: 1F(2) rt gi ngoLi #I(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
namespace ProgrammingCSharp
{
using System;
public class Test
{
public static void Main()
{
Console.WriteLine("Enter Main...);
Test t = new Test();
t.Func1();
Console.WriteLine("Exit Main...);
}
public void Func1()
{
Console.WriteLine("Enter Func1...);
Func2();
Console.WriteLine("Exit Func1...);
}
public void Func2()
{
Console.WriteLine("Enter Func2...);
try
{
Console.WriteLine("Entering try block...);
throw new System.Exception();
Console.WriteLine("Exiting try block...);
}
X/L:Ngo,iL4
)0A
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
catch
{
Console.WriteLine("Exception caught and handled.);
}
Console.WriteLine("Exit Func2...);
}
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
:nter Main...
:nter -unc1...
:nter -unc)...
:ntering tr' b!ock...
:(ce&tion caught and hand!ed.
:(it -unc)...
:(it -unc1...
:(it Main...
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
I 56 1).2 cng tFng tW nh .I 56 &inh hOa trong 1).1 ngoBi trJ chFng trnh th9& .;o
trong &et khi tr%catch. Th>ng thng ch$ng ta cng co th3 at khi tr% Lao !uanh nh?ng
oBn chFng trnh ti`& Mn gPV ra sW nguV hi3&v nh 7; .i/c truV cSC fi7'v chC Ch2t Le nh...
Th'o sau khi tr% 7; cPu 7/nh catch tng !u2t. *Pu 7/nh catch trong .I 56 n;V 7; tng !u2t
Lfi . ch$ng ta kh>ng U2c :nh 7oBi ngoBi 7/ n;o &; ch$ng ta L_t gi?. Trong trng hGC tng
!u2t n;V th khi catch n;V sH L_t gi? Lht c4 ngoBi 7/ n;o Gc Ch2t sinh. SE 56ng cPu 7/nh
catch 3 L_t gi? ngoBi 7/ U2c :nh sH Gc thDo 7uSn trong Chmn sau ca chFng.
Trong .I 56 1).2 n;Vv khi catch Fn giDn 7; th>ng L2o ra &et ngoBi 7/ Gc L_t gi? .; Gc
UE 7]. Trong .I 56 ca th# gii thWcv ch$ng ta cK th3 a h;nh eng $ng 3 sEa ch?a .hn `
&; gPV ra sW ngoBi 7/. I 56v n#u ngi sE 56ng ang c &f &et tSC tin cK thuec tInh chb Ocv
ch$ng ta cK th3 gOi &et ChFng th4c cho ChgC ngi 5ong thaV i thuec tInh ca tSC tin.
N#u chFng trnh thWc hi/n thi#u Le nhv ch$ng ta cK th3 Ch2t sinh cho ngi 5ong cF hei 3
Kng Lt c2c 4ng 56ng kh2c 7Bi. ThS& chI trong trng hGC Uhu nhht ta kh>ng kh_c Ch6c
Gc th khi catch n;V cK th3 in ra th>ng i/C 7\i 3 ngi 5ong Li#t.
ThE ki3& tra k 7Bi chFng trnh 1).2 tr9nv ch$ng ta sH thhV Uuht hi/n oBn &z i .;o tJng
h;& nh Main()v Func1{}v Func2{}v .; cD khi tr%. *h$ng ta kh>ng Lao gi thhV nK tho2t khi
7/nh tr% {t4c 7; in ra th>ng L2o s/_iting try #o+1(((tv haV thWc hi/n 7/nh n;V}v &ac 5o nK .cn
tho2t ra th'o th4 tW Func2{}v Func1{}v .; Main(). *huV/n g UDV ra
X/L:Ngo,iL4
)0T
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
"hi &et ngoBi 7/ Gc Ch2t sinhv .i/c thi h;nh ngaV 7SC t4c sH L: tB& 5Jng .; .i/c thi h;nh sH
Gc chuV3n !ua khi 7/nh catch. NK kh>ng Lao gi trD .` 7ung thWc hi/n Lan muv t4c 7;
c2c 7/nh sau khi Ch2t ra ngoBi 7/ trong khi tr% kh>ng Gc thWc hi/n. Trong trng hGC n;V
ch$ng ta sH kh>ng Lao gi nhSn Gc th>ng L2o s/_iting try #o+1((((t. "hi 7/nh catch UE 7]
7\i .; sau K chuV3n .i/c thWc thi chFng trnh #n c2c 7/nh ti#C sau khi catch.
PV kh>ng cK .i/c !uaV 7Bi cuec gOi h;& trc trong stack. NgoBi 7/ LPV gi Gc UE 7]v
kh>ng cK .hn ` g UDV rav .; chFng trnh ti#C t6c hoBt eng Lnh thng. ^i`u n;V trf n9n
r r;ng hFn n#u ch$ng ta 5i chuV3n khi tr%catch 79n h;& Func1 nh trong .I 56 &inh hOa
1).) L9n 5i.
89 d: 1F(F) Cat+h trong h-m gBi(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
namespace ProgrammingCSharp
{
using System;
public class Test
{
public static void Main()
{
Console.WriteLine("Enter Main...);
Test t = new Test();
t.Func1();
Console.WriteLine("Exit Main...);
}
public void Func1()
{
Console.WriteLine("Enter Func1...);
try
{
Console.WriteLine("Entering try block...);
Func2();
Console.WriteLine("Exiting try block...);
}
catch
{
Console.WriteLine("Exception caught and handled.);
}
Console.WriteLine("Exit Func1...);
X/L:Ngo,iL4
)=0
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
}
public void Func2()
{
Console.WriteLine("Enter Func2...);
throw new System.Exception();
Console.WriteLine("Exit Func2...);
}
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
:nter Main...
:nter -unc1...
:ntering tr' b!ock...
:nter -unc)...
:(ce&tion caught and hand!ed.
:(it -unc1...
:(it Main...
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
+$c n;V ngoBi 7/ kh>ng Gc UE 7] L9n trong h;& Func2{}v &; nK Gc UE 7] L9n trong h;&
Func1{}. "hi h;& Func2{} Gc gOiv nK in cPu 7/nh th>ng L2o .;o h;& ri Ch2t sinh &et
ngoBi 7/. i/c thWc hi/n chFng trnh L: ngngv *+, t& ki#& Chmn UE 7] ngoBi 7/v nhng
trong h;& n;V kh>ng cK .; *+, .;o stack 7hV h;& gOi trong trng hGC n;V 7; Func1{}. *Pu
7/nh catch sH Gc gOiv .; .i/c thWc thi ti#C t6c thWc hi/n Lnh thng sau cPu 7/nh catch.
[zV ch_c ch_n rYng ch$ng ta z hi3u r tBi sao cPu 7/nh s/_iting try #o+1t .; s/_it F>n+2t
kh>ng Gc in ra. *h$ng ta cK th3 5ong c2ch c 3 ki3& tra .i/c n;V LYng c2ch 5ong chFng
trnh 5'Lug cho chFng trnh chBV tJng Lc 3 t& hi3u r hFn.
+ TBo &et khi catch U2c :nhu
*ho #n LPV gi ch$ng ta chb 5ong khi catch tng !u2tv t4c 7; .i Lht c4 ngoBi 7/ n;o cng
Gc. TuV nhi9n ch$ng ta cK th3 tBo ra khi catch U2c :nh 3 UE 7] chb &et .;i c2c ngoBi 7/
ch4 kh>ng ChDi to;n Le ngoBi 7/v 5Wa tr9n ki3u ca ngoBi 7/ Ch2t sinh. I 56 1).N &inh hOa
c2ch U2c :nh 7oBi ngoBi 7/ &; ch$ng ta UE 7].
89 d:1F(G) ,+ =Mnh ngoLi #I =i rt(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
namespace ProgrammingCSharp
{
using System;
public class Test
X/L:Ngo,iL4
)=1
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
{
public static void Main()
{
Test t = new Test();
t.TestFunc();
}
// ta th chia hai phn x l ngoai l ring
public void TestFunc()
{
try
{
double a = 5;
double b = 0;
Console.WriteLine("{0} / {1} = {2}, a, b, DoDivide(a,b));
}
catch (System.DivideByZeroException)
{
Console.WriteLine("DivideByZeroException caught!);
}
catch (System.ArithmeticException)
{
Console.WriteLine("ArithmeticException caught!);
}
catch
{
Console.WriteLine("Unknown exception caught);
}
}
// thuc hin php chia hop l
public double DoDivide(double a, double b)
{
if ( b == 0)
throw new System.DivideByZeroException();
if ( a == 0)
throw new System.ArithmeticException();
return a/b;
}
}
X/L:Ngo,iL4
)=2
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
Di$ide3'Tero:(ce&tion caught5
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Trong .I 56 n;Vv ChFng th4c DoDivide{} sH kh>ng cho ChgC ch$ng ta chia cho 'ro Lfi &et
s kh2cv .; cng kh>ng cho ChgC chia s 'ro. NK sH Ch2t sinh &et i tGng ca Divide-
ByzeroException n#u ch$ng ta thWc hi/n chia .i 'ro. Trong to2n hOc .i/c 7hV 'ro chia cho
&et s kh2c 7; Gc ChgCv nhng trong .I 56 &inh hOa ca ch$ng ta kh>ng cho ChgC thWc
hi/n .i/c n;Vv n#u thWc hi/n sH Ch2t sinh ra &et ngoBi 7/ ArithmeticException.
"hi &et ngoBi 7/ Gc Ch2t sinhv *+, sH ki3& tra &\i khi UE 7] ngoBi 7/ th'o th4 tW .; sH
7hV khi mu ti9n thIch hGC. "hi ch$ng ta thWc hi/n .i a=5 .; b= th k#t !uD nh sauu
5 / = 0.1428514285143
Nh ch$ng ta &ong &unv kh>ng cK ngoBi 7/ Gc Ch2t sinh. TuV nhi9nv khi ch$ng ta thaV
i gi2 tr: ca a 7; 0v th k#t !uD 7;u
ArithmeticException caught!
NgoBi 7/ Gc Ch2t sinhv .; *+, sH ki3& tra ngoBi 7/ mu ti9nu DivideByZeroException. 8fi
. kh>ng Cho hGCv n9n nK sH ti#C t6c i t& .; khi UE 7] ArithmeticException Gc chOn.
*ui congv giD sE ch$ng ta thaV i gi2 tr: ca L 7; 0. "hi thWc hi/n i`u n;V sH 5cn #n ngoBi
7/ DivideByZeroException.
2hi +h3u *h$ng ta ChDi cMn thSn th4 tW ca cPu 7/nh catchv Lfi . DivideByZero-
Exception Gc 5cn Uuht tJ ArithmeticException. N#u ch$ng ta Do th4 tW ca cPu 7/nh
catchv th ngoBi 7/ DivideByZeroException sH Gc Cho hGC .i khi UE 7] ngoBi 7/ Arith-
meticException. ; .i/c UE 7] ngoBi 7/ sH kh>ng Lao gi Gc giao cho khi UE 7]
DivideByZeroException. ThSt .SVv n#u th4 tW n;V Gc Dov nK sH kh>ng cho ChgC Lht c4
ngoBi 7/ n;o Gc UE 7] Lfi khi UE 7] ngoBi 7/ DivideByZeroException. Trnh Li9n 5:ch sH
nhSn ra rYng DivideByZeroException kh>ng Gc thWc hi/n Lht c4 khi n;o .; nK sH th>ng
L2o &et 7\i Li9n 5:ch.
*h$ng ta cK th3 ChPn Chi cPu 7/nh tr% catchv LYng c2ch L_t gi? nh?ng ngoBi 7/ U2c :nh
trong &et h;& .; nhi`u ngoBi 7/ tng !u2t trong nhi`u h;&. M6c Ich ca thWc hi/n n;V 7;
a ra c2c thi#t k# $ng. ZiD sE ch$ng ta cK ChFng th4c Av ChFng th4c n;V gOi &et ChFng
th4c kh2c t9n 7; ChFng th4c Bv #n 7Gt &nh ChFng th4c B gOi ChFng th4c C. ; ChFng
th4c C ti#C t6c gOi ChFng th4c Dv cui cong ChFng th4c D gOi ChFng th4c E. 1hFng th4c
E f &4c e sPu nhht trong chFng trnh ca ch$ng tav ChFng th4c Av B f &4c e cao hFn.
N#u ch$ng ta o2n trc ChFng th4c E cK th3 Ch2t sinh ra ngoBi 7/v ch$ng ta cK th3 tBo ra
khi tr%catch 3 L_t gi? nh?ng ngoBi 7/ n;V f ch\ gmn nFi Ch2t sinh ra ngoBi 7/ nhht. *h$ng
ta cng cK th3 tBo ra nhi`u khi UE 7] ngoBi 7/ chung f trong oBn chFng trnh f &4c cao
trong trng hGC nh?ng ngoBi 7/ kh>ng o2n trc Gc.
X/L:Ngo,iL4
)=)
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
%Pu ,+nh fina,,L
Trong &et s tnh hungv .i/c Ch2t sinh ngoBi 7/ .; un(in5 stack cK th3 tBo ra &et s .hn
`. I 56 nh n#u ch$ng ta &f &et tSC tin haV trng hGC kh2c 7; U2c nhSn &et t;i nguV9nv
ch$ng ta cK th3 cmn thi#t &et cF hei 3 Kng &et tSC tin haV 7; giDi ChKng Le nh /& &;
chFng trnh z chi#& gi? trc K.
2hi +h3u Trong ng>n ng? *@v .hn ` n;V It UDV ra hFn 5o cF ch# thu 5On tW eng ca *@
ngqn ngJa nh?ng ngoBi 7/ Ch2t sinh tJ .i/c thi#u Le nh.
TuV nhi9nv cK &et s h;nh eng &; ch$ng ta cmn ChDi !uan tP& Lht c4 khi n;o &et ngoBi
7/ Gc Ch2t sinh rav nh .i/c Kng &et tSC tinv ch$ng ta cK hai chi#n 7Gc 3 7Wa chOn thWc
hi/n. Met hng ti#C cSn 7; a h;nh eng nguV hi3& .;o trong khi tr% .; sau K thWc hi/n
.i/c Kng tSC tin trong cD hai khi catch .; tr%. TuV nhi9nv i`u n;V gPV ra oBn chFng
trnh kh>ng Gc C 5o sE 56ng trong 7_C 7/nh. Ng>n ng? *@ cung chC &et sW thaV th# tt
hFn trong khi finall%.
^oBn chFng trnh L9n trong khi catch Gc D& LDo thWc thi &; kh>ng !uan tP& #n
.i/c khi n;o th &et ngoBi 7/ Gc Ch2t sinh. 1hFng th4c TestFunc{} trong .I 56 1).- &inh
hOa .i/c &f &et tSC tin nh 7; h;nh eng mu ti9n ca nKv sau K ChFng th4c thWc hi/n &et
.;i c2c ChgC to2n to2n hOcv .; sau K 7; tSC tin Gc Kng. *K th3 trong !u2 trnh &f tSC tin
cho #n khi Kng tSC tin chFng trnh Ch2t sinh ra &et ngoBi 7/. N#u Uuht hi/n ngoBi 7/v .;
khi K tSC tin .cn cn &f. Ngi Ch2t tri3n Li#t rYng kh>ng cK chuV/n g UDV rav .; cui ca
ChFng th4c n;V th tSC tin sH Gc Kng. po ch4c nqng Kng tSC tin Gc 5i chuV3n .;o
trong khi finall%v f PV nK sH Gc thWc thi &; kh>ng cmn !uan tP& #n .i/c cK Ch2t sinh
haV kh>ng &et ngoBi 7/ trong chFng trnh.
89 d: 1F(Q) Sn d:ng 1hci Tina##y(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
namespace ProgrammingCSharp
{
using System;
public class Test
{
public static void Main()
{
Test t = new Test();
t.TestFunc();
}
// chia hai s v x l ngoai l nu c
public void TestFunc()
{
try
X/L:Ngo,iL4
)=N
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
{
Console.WriteLine("Open file here);
double a = 5;
double b = 0;
Console.WriteLine("{0} /{1} = {2}, a, b, DoDivide(a,b));
Console.WriteLine("This line may or not print);
}
catch (System.DivideByZeroException)
{
Console.WriteLine("DivideByZeroException caught!);
}
catch
{
Console.WriteLine("Unknown exception caught);
}
finally
{
Console.WriteLine("Close file here.);
}
}
// thuc hin chia nu hop l
public double DoDivide(double a, double b)
{
if ( b == 0)
{
throw new System.DivideByZeroException();
}
if ( a == 0)
{
throw new System.ArithmeticException();
}
return a/b;
}
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
?&en "i!e here
X/L:Ngo,iL4
)=-
NgnNgLpTrnhC#
Di$ide3'Tero:(ce&tion caught5
C!ose "i!e here.
GUt LuV trong trWXng hY& b = 1)
?&en "i!e here
5; 1) = 0.*1++++++++++
C!ose "i!e here
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Trong .I 56 n;V &et khi catch Gc 7oBi LQ .; th9& .;o khi finall%. 8ht c4 khi &et ngoBi
7/ cK Gc Ch2t sinh ra haV kh>ng th khi 7/nh L9n trong finall% cng Gc thWc thi. po .SV
n9n trong cD hai trng hGC ta cng thhV Uuht hi/n th>ng i/C sC#os' Ti#' h'r't.
Nh:ng i t@ng ngo<i ,+
*ho #n 7$c n;V th ch$ng ta cK th3 sE 56ng tt c2c ngoBi 7/ cng nh c2ch UE 7] kh_c
Ch6c c2c ngoBi 7/ n;V. Trong Chmn n;V ch$ng ta sH ti#n h;nh .i/c t& hi3u c2c i tGng Gc
UPV 5Wng cho .i/c UE 7] ngoBi 7/. ^i tGng System.Exception cung chC &et s c2c ChFng
th4c .; thuec tInh h?u 56ng. Thuec tInh Message cung chC th>ng tin .` ngoBi 7/v nh 7; 7] 5o
tBi sao ngoBi 7/ Gc Ch2t sinh. Thuec tInh Message 7; thuec tInh chb Ocv oBn chFng trnh
Ch2t sinh ngoBi 7/ cK th3 thi#t 7SC thuec tInh Message nh 7; &et i &6c cho Le khfi 5Wng
ca ngoBi 7/. Thuec tInh HelpLink cung chC &et 7i9n k#t 3 trG gi$C cho c2c tSC tin 7i9n !uan
#n c2c ngoBi 7/. ^PV 7; thuec tInh chb Oc. Thuec tInh StackTrace cng 7; thuec tInh chb Oc
.; Gc thi#t 7SC Lfi *+,. Trong .I 56 1).0 thuec tInh Exception.HelpLink Gc thi#t 7SC .;
truV cSC 3 cung chC th>ng tin cho ngi sE 56ng .` ngoBi 7/ DivideBy-ZeroException.
Thuec tInh StackTrace ca ngoBi 7/ Gc sE 56ng 3 cung chC th>ng tin stack cho cPu 7/nh
7\i. Met th>ng tin stack cung chC h;ng 7oBt c2c cuec gOi stack ca ChFng th4c gOi &; 5cn
#n nh?ng ngoBi 7/ Gc Ch2t sinh.
89 d: 1F(v) L-m NiI+ Noi =ci t;Hng ngoLi #I(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
namespace ProgrammingCSharp
{
using System;
public class Test
{
public static void Main()
{
Test t = new Test();
t.TestFunc();
}
// chia hai s v x l ngoai l
X/L:Ngo,iL4
)=0
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
public void TestFunc()
{
try
{
Console.WriteLine("Open file here);
double a = 12;
double b = 0;
Console.WriteLine("{0} /{1} = {2}, a, b, DoDivide(a,b));
Console.WriteLine("This line may or not print);
}
catch (System.DivideByZeroException e)
{
Console.WriteLine("\nDivideByZeroException! Msg: {0}, e.Message);
Console.WriteLine("\nHelpLink: {0}, e.HelpLink);
Console.WriteLine("\nHeres a stack trace: {0}\n, e.StackTrace);
}
catch
{
Console.WriteLine("Unknown exception caught);
}
}
// thuc hin php chia hop l
public double DoDivide( double a, double b)
{
if ( b == 0)
{
DivideByZeroException e = new DivideByZeroException();
e.HelpLink = "http://www.hcmunc.edu.vn;
throw e;
}
if ( a == 0)
{
throw new ArithmeticException();
}
return a/b;
}
}
}
X/L:Ngo,iL4
)==
NgnNgLpTrnhC#
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
?&en "i!e here
Di$ide3'Tero:(ce&tiZn Msg: Btte#&ted to di$ide b' @ero
,e!&9ink: htt&:;;www.hc#uns.edu.$n
,ere[s a stack trace:
at Erogra##ingFCShar&.est.DoDi$ide.Doub!e c% Doub!e b/
in c:Q...e(ce&tion0+.cs: !ine 5+
at Erogra##ingFCShar&.est.est-unc./ in ...e(ce&tion0+.cs: !ine )).
C!ose "i!e here
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Trong oBn k#t !uD tr9nv 5anh s2ch trac' ca stack Gc hi3n th: th'o th4 tW ngGc 7Bi th4 tW
gOi. NK hi3n th: &et 7\i trong ChFng th4c DoDivde{}v ChFng th4c n;V Gc gOi tJ ChFng
th4c TestFunc{}. "hi c2c ChFng th4c gOi 7ng nhau nhi`u chCv th>ng tin stack cK th3 gi$C
ch$ng ta hi3u th4 tW ca c2c ChFng th4c Gc gOi.
Trong .I 56 n;Vv hFn 7; .i/c Fn giDn Ch2t sinh &et DidiveByZeroExceptionv ch$ng ta tBo
&et th3 h/n &i ca ngoBi 7/u
DivideByZeroException e = new DivideByZeroException();
*h$ng ta kh>ng truV`n .;o th>ng i/C ca ch$ng tav n9n th>ng i/C &ac :nh sH Gc in rau
DivideByZeroException Msg: Attemped to divide by zero.
PV ch$ng ta cK th3 L sung nh 5ng 7/nh L9n 5i 3 truV`n .;o th>ng i/C ca ch$ng ta
toV chOn nh sauu
new DivideByZeroException("ou tried to divide by zero which is not meaningful);
Trc khi Ch2t sinh ra ngoBi 7/v ch$ng ta thi#t 7SC thuec tInh HelpLink nh sauu
e.HelpLink = "http://www.hcmunc.edu.vn;
"hi ngoBi 7/ Gc L_t gi?v chFng trnh sH in th>ng i/C .; HelpLink ra &;n hnhu
catch (System.DivideByZeroException e)
{
Console.WriteLine("\nDivideByZeroException! Msg: {0}, e.Message);
Console.WriteLine("\nHelpLink: {0}, e.HelpLink);
}
i/c 7;& n;V cho ChgC ch$ng ta cung chC nh?ng th>ng tin h?u Ich cho ngi sE 56ng. Th9&
.;o K th>ng tin stack cng Gc a ra LYng c2ch sE 56ng thuec tInh StackTrace ca i
tGng ngoBi 7/u
Console.WriteLine("\n Heres a stack trace: {0}\n, e.StackTrace);
"#t !uD 7; c2c .#t trong stack sH Gc Uuht rau
Heres a stack trace:
at ProgrammingCSharp.Test.DoDivide(Double c, Double b)
X/L:Ngo,iL4
)=A
NgnNgLpTrnhC#
in c:\...exception06.cs: line 56
at ProgrammingCSharp.Test.TestFunc() in ...exception06.cs: line 22.
+u ] rYngv Chmn ng 5cn Gc .i#t t_tv 5o K k#t !uD ca LBn cK th3 hFi kh2c &et tI.
8Dng 1).1 sau &> tD &et s c2c 7C ngoBi 7/ chung Gc khai L2o L9n trong na&'sCac'
System.
CC LzP NGUT L
Tbn ngo:i )C M t"
MethodAccessException +\i truV cSCv 5o truV cSC #n th;nh .i9n haV
ChFng th4c kh>ng Gc truV cSC
ArgumentException +\i tha& s i &6c
ArgumentNullException ^i &6c Nullv ChFng th4c Gc truV`n i &6c
null kh>ng Gc chhC nhSn
ArithmeticException +\i 7i9n !uan #n c2c ChgC to2n
ArrayTypeMismatchException "i3u &Dng kh>ng hGCv khi c 7u tr? ki3u kh>ng
thIch hGC .;o &Dng
DivideByZeroException +\i chia 'ro
FormatException ^:nh 5Bng kh>ng chInh U2c &et i &6c n;o K
IndexOutOfRangeException *hb s truV cSC &Dng kh>ng hGC 7/v 5ong nhQ hFn
chb s nhQ nhht haV 7n hFn chb s 7n nhht ca
&Dng
InvalidCastException 1hgC g2n kh>ng hGC 7/
MulticastNotSupportedException Mu7ticast kh>ng Gc h\ trGv 5o .i/c k#t hGC hai
5'7'gat' kh>ng $ng
NotFiniteNumberException "h>ng ChDi s h?u hBnv s kh>ng hGC 7/
NotSupportedException 1hFng th4c kh>ng h\ trGv khi gOi &et ChFng
th4c kh>ng tn tBi L9n trong 7C.
NullReferenceException Tha& chi#u null kh>ng hGC 7/.
OutOfMemoryException jut of &'&orV
OverflowException +\i tr;n ChgC to2n
StackOverflowException Tr;n stack
TypeInitializationException "i3u khfi tBo saiv khi Le khfi 5Wng tdnh cK 7\i.
4*ng 1F(1 ) C,+ ngoLi #I th;Wng _>Xt hiIn(
T<o ri5ng c/c ngo<i ,+
*+, cung chC nh?ng ki3u 5? 7i/u ngoBi 7/ cF LDnv trong .I 56 trc ch$ng ta z tBo &et
.;i c2c ki3u ngoBi 7/ ri9ng. Th>ng thng ch$ng ta cmn thi#t ChDi cung chC c2c th>ng tin &f
reng cho khi catch khi &et ngoBi 7/ Gc Ch2t sinh. TuV nhi9nv cK nh?ng 7$c ch$ng ta
X/L:Ngo,iL4
)=T
NgnNgLpTrnhC#
&un cung chC nhi`u th>ng tin &f reng haV 7; c2c khD nqng ac Li/t cmn thi#t trong ngoBi 7/
&; ch$ng ta tBo ra. *h$ng ta 5 5;ng tBo ra c2c ngoBi 7/ ri9ngv haV cn gOi 7; c2c ngoBi 7/ toV
chOn {custo& 'Uc'Ction}v i`u L_t Luec .i c2c ngoBi 7/ n;V 7; ch$ng ChDi Gc 5cn Uuht tJ
System.ApplicationException. I 56 1).= sau &inh hOa .i/c tBo &et ngoBi 7/ ri9ng.
89 d:) 0Lo mYt ngoLi #I ri%ng(
-----------------------------------------------------------------------------
namespace ProgrammingCSharp
{
using System;
// tao ngoai l ring
public class MyCustomException : System.ApplicationException
{
public MyCustomException( string message): base(message)
{
}
}
public class Test
{
public static void Main()
{
Test t = new Test();
t.TestFunc();
}
// chia hai s v x l ngoai l
public void TestFunc()
{
try
{
Console.WriteLine("Open file here);
double a = 0;
double b = 5;
Console.WriteLine("{0} /{1} = {2}, a, b, DoDivide(a,b));
Console.WriteLine("This line may or not print);
}
catch (System.DivideByZeroException e)
{
Console.WriteLine("\nDivideByZeroException! Msg: {0}, e.Message);
X/L:Ngo,iL4
)A0
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
Console.WriteLine("\nHelpLink: {0}, e.HelpLink);
}
catch (MyCustomException e)
{
Console.WriteLine("\nMyCustomException! Msg: {0}, e.Message);
Console.WriteLine("\nHelpLink: {0}, e.HelpLink);
}
catch
{
Console.WriteLine("Unknown excepiton caught);
}
finally
{
Console.WriteLine("Close file here.);
}
}
// thuc hin php chia hop l
public double DoDivide( double a, double b)
{
if ( b == 0)
{
DivideByZeroException e = new DivideByZeroException();
e.HelpLink = "http://www.hcmunc.edu.vn;
throw e;
}
if ( a == 0)
{
MyCustomException e = new MyCustomException("Cant have zero
divisor);
e.HelpLink = "http://www.hcmuns.edu.vn;
throw e;
}
return a/b;
}
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
X/L:Ngo,iL4
)A1
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
+C MyCustomException Gc 5cn Uuht tJ System.ApplicationException .; 7C n;V kh>ng
cK thWc thi haV khai L2o g ngo;i &et h;& khfi 5Wng. [;& khfi 5Wng n;V 7hV tha& s 7; &et
chu\i .; truV`n cho 7C cF sf. Trong trng hGC n;Vv 7Gi Ich ca .i/c tBo ra ngoBi 7/ 7; 7;&
ni LSt i`u &; chuFng trnh &un &inh hOav t4c 7; kh>ng cho ChgC s chia 7; 'ro. SE 56ng
ngoBi 7/ ArithmeticException th tt hFn 7; ngoBi 7/ ch$ng ta tBo ra. Nhng nK cK th3 7;&
nhm& 7cn cho nh?ng ngi 7SC trnh kh2c . ChgC chia .i s chia 7; 'ro kh>ng ChDi 7; 7\i s
hOc.
.h/t sinh ,<i ngo<i ,+
ZiD sE ch$ng ta &un khi catch thWc hi/n &et .;i h;nh eng $ng n;o K ri sau K
Ch2t sinh 7Bi ngoBi 7/ ra L9n ngo;i khi catch {trong &et h;& gOi}. *h$ng ta Gc ChgC Ch2t
sinh 7Bi cong &et ngoBi 7/ haV Ch2t sinh 7Bi c2c ngoBi 7/ kh2c. N#u Ch2t sinh ra ngoBi 7/ kh2cv
ch$ng ta cK th3 ChDi nh$ng ngoBi 7/ Lan mu .;o L9n trong ngoBi 7/ &i 3 ChFng th4c gOi
cK th3 hi3u Gc 7ai 7:ch .; ngun gc ca ngoBi 7/. Thuec tInh InnerException ca ngoBi 7/
&i cho ChgC truV cSC ngoBi 7/ Lan mu.
8fi . InnerException cng 7; &et ngoBi 7/v n9n nK cng cK &et ngoBi 7/ L9n trong. po
.SVv to;n Le 5PV chuV`n ngoBi 7/ 7; &et sW Kng t {n'st} ca &et ngoBi 7/ n;V .i &et ngoBi
7/ kh2c. Zing nh 7; con 7St Stv &\i con ch4a trong &et con .; #n 7Gt con L9n trong 7Bi
ch4a...
89 d: 1F(x) Ph,t sinh #Li ngoLi #I ngoLi #I inn'r(
-----------------------------------------------------------------------------
namespace ProgrammingCSharp
{
using System;
// tao ngoai l ring
public class MyCustomException : System.Exception
{
public MyCustomException( string message, Exception inner):
base(message, inner)
{
}
}
public class Test
{
public static void Main()
{
Test t = new Test();
X/L:Ngo,iL4
)A2
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
t.TestFunc();
}
// chia hai s v x l ngoai l
public void TestFunc()
{
try
{
DangerousFunc1();
}
catch (MyCustomException e)
{
Console.WriteLine("\n{0}, e.Message);
Console.WriteLine("Retrieving exception history...);
Exception inner = e.InnerException;
while ( inner != null)
{
Console.WriteLine("{0}, inner.Message);
inner = inner.InnerException;
}
}
}
public void DangerousFunc1()
{
try
{
DangerousFunc2();
}
catch (System.Exception e)
{
MyCustomException ex = new
MyCustomException("E3 Custom Exception Situation, e);
throw ex;
}
}
public void DangerousFunc2()
{
try
{
X/L:Ngo,iL4
)A)
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2008
For Evaluation Only.
NgnNgLpTrnhC#
DangerousFunc3();
}
catch (System.DivideByZeroException e)
{
Exception ex = new Exception("E2 - Func2 caught divide by zero, e);
throw ex;
}
}
public void DangerousFunc3()
{
try
{
DangerousFunc4();
}
catch (System.ArithmeticException)
{
throw;
}
catch (System.Exception)
{
Console.WriteLine("Exception handled here.);
}
}
public void DangerousFunc4()
{
throw new DivideByZeroException("E1 DivideByZero Exception);
}
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
?@t A>*)
:3 \ Custo# :(ce&tion Situation5
<etrie$ing e(ce&tion histor'...
:) - -unc) caught di$ide b' @ero
:1 \ Di$ide3'Tero:(ce&tion
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
^3 hi3u r hFn ta cK th3 5ong trnh 5'Lugg'r 3 chBV tJng Lc chFng trnh khi K ta sH
hi3u r tJng Lc thWc thi cng nh .i/c Ch2t sinh c2c ngoBi 7/.
X/L:Ngo,iL4
)AN
NgnNgLpTrnhC#
*hFng trnh L_t mu .i .i/c gOi h;& DangerousFunc1{} trong khi tr%u
try
{
DangerousFunc1();
}
DangerousFunc1{} gOi DangerousFunc2{}v DangerousFunc2{} 7Bi gOi DangerousFunc3{}v .;
cui cong DangerousFunc3{} gOi DangerousFunc4{}. Tht cD .i/c gOi n;V i`u nY& trong khi
tr%. *ui congv DangerousFunc4{} Ch2t sinh ra ngoBi 7/ DivideByzeroException. NgoBi 7/
n;V Lnh thng cK ch4a th>ng i/C L9n trong nKv nhng f PV ch$ng ta tW 5o 5ong th>ng
i/C &i. ^3 5 th'o 5i ch$ng ta a .;o c2c chu\i U2c nhSn tumn tW c2c sW ki/n 5in ra.
NgoBi 7/ Gc Ch2t sinh trong DangerousFunc4{} .; nK Gc L_t trong khi catch trong h;&
DangerousFunc3{}. "hi catch trong DangerousFunc3{} sH L_t c2c ngoBi 7/ Arithmetic-
Exception { nh 7; DivideByZeroException}v nK kh>ng thWc hi/n h;nh eng n;o &; chb Fn
giDn 7; Ch2t sinh 7Bi ngoBi 7/u
catch ( System.ArithmeticException)
{
throw;
}
*$ Ch2C 3 thWc hi/n Ch2t sinh 7Bi cong &et ngoBi 7/ &; kh>ng cK Lht c4 L sung haV hi/u
chbnh n;o 7; u throw.
po .SV ngoBi 7/ Gc Ch2t sinh cho DangerousFunc2{}v khi catch trong DangerousFunc2{}
thWc hi/n &et .;i h;nh eng .; ti#C t6c Ch2t sinh &et ngoBi 7/ cK ki3u &i. Trong h;& khfi
5Wng ca ngoBi 7/ &iv DangerousFunc2{} truV`n &et chu\i th>ng i/C &i {s/2 S (un)
+a>ght diNid' y 'rot} .; ngoBi 7/ Lan mu. po .SV ngoBi 7/ Lan mu {E1} trf th;nh ngoBi 7/
L9n trong ca ngoBi 7/ &i {E2}. Sau K h;& DangerousFunc2{} Ch2t sinh ngoBi 7/ n;V {E2}
cho h;& DangerousFunc1{}.
DangerousFunc1{} L_t gi? ngoBi 7/ n;Vv 7;& &et s c>ng .i/c .; tBo ra &et ngoBi 7/ &i cK
ki3u 7; MyCustomExceptionv truV`n .;o h;& khfi 5Wng ca ngoBi 7/ &i &et chu\i &i
{s/F ! C>stom /_+'ption Sit>ationt} .; ngoBi 7/ Gc L_t gi? {E2}. *h$ng ta n9n nh rYng
ngoBi 7/ Gc L_t gi? 7; ngoBi 7/ cK ch4a ngoBi 7/ DivideByZeroException {E1} L9n trong nK.
TBi thi i3& n;Vv ch$ng ta cK &et ngoBi 7/ ki3u MyCustomException {E3}v ngoBi 7/ n;V ch4a
L9n trong &et ngoBi 7/ ki3u EUc'Ction {E2}v .; #n 7Gt nK ch4a &et ngoBi 7/ ki3u
DivideByZeroException {E1} L9n trong. Sau cong ngoBi 7/ Gc Ch2t sinh cho h;& TestFunc
"hi khi catch ca TestFunc thWc hi/n nK sH in ra th>ng i/C ca ngoBi 7/ u
E3 Custom Exception Situation!
sau K tJng ngoBi 7/ L9n trong sH Gc 7hV ra th>ng !ua .ng 7aC whileu
while ( inner != null)
{
X/L:Ngo,iL4
)A-
NgnNgLpTrnhC#
Console.WriteLine("{0}, inner.Message);
inner = inner.InnerException;
}
"#t !uD 7; chu\i c2c ngoBi 7/ Gc Ch2t sinh .; Gc L_t gi?u
Retrieving exception history...
E2 - Func2 caught divide by zero
E1 DivideByZero Exception
%Pu hSi *7 tr= ,i
CU> hVi 1u i/c sE 56ng catch kh>ng cK tha& s cK . nh cK nhi`u s4c &Bnh 5o ch$ng L_t
gi?a tht cD c2c ngoBi 7/. TBi sao ch$ng ta kh>ng 7u>n 7u>n sE 56ng cPu 7/nh catch kh>ng cK
tha& s 3 L_t c2c 7\i
0r* #Wi 1) M^+ dC sn d:ng +at+h d>y nhXt +6 rXt nhiD> sP+ mLnhf nh;ng n6 +mng #-m mXt rXt
nhiD> thng tin A>an trBng ND ngoLi #I =;H+ ph,t sinh( ?hi =6 +h3ng ta s` 1hng i@t +h9nh
_,+ #oLi ngoLi #I _*y ra N- 1h6 +6 thi *o tr +mng nh; 1hr+ ph:+ nhng ngoLi #I sa> n-y( 8D
ph9a ng;Wi dCng +mng Ny( N@> +h;<ng trnh g^p ngoLi #I m- 1hng +6 thng ,o r r-ng
+ho ng>Wi dCng th +6 thi #-m +ho hB hoang mangf N- +6 thi =k #ai +ho +h;<ng trnh +7a
+h3ng ta 1hng tct ngay +* nhng #ai 1hng ph*i do ta( 89 d: nh; #ai h@t t-i ng>y%n Y nho
do ng;Wi dCng sn d:ng A>, nhiD> +h;<ng trnh hoLt =Yng +Cng #3+( 06m #Li #- +h3ng ta n%n
sn d:ng +at+h Noi nhng tham sc +hi ti@t =i thO+ hiIn tct NiI+ A>*n #t +,+ ngoLi #I =;H+ ph,t
sinh(
CU> hVi 2u *K ChDi tht cD nh?ng ngoBi 7/ Gc i UE &et c2ch Lnh ng
0r* #Wi 2) ?hng ph*if +6 hai #oLi ngoLi #If ngoLi #I hI thcng N- ngoLi #I +7a +h;<ng trnh
Png d:ng( NgoLi #I +7a +h;<ng trnh Png d:ng th s` 1hng 1@t th3+ +h;<ng trnh( CEn
ngoLi #I hI thcng th s` 1@t th3+ +h;<ng trnh( N6i +h>ng =6 #- nhng ngoLi #I _>Xt hiIn
tr;o+ =Uy( &iIn nay th ng;Wi ta +hia ra nhiD> mP+ =Y ngoLi #I N- tCy th'o t5ng mP+ =Y +7a
ngoLi #I m- +h;<ng trnh +7a +h3ng ta s` =;H+ nhn nhng Png _n 1h,+ nha>( di i@t th%m
+hi ti@t +h3ng ta +6 thi =B+ th%m trong t-i #iI> (N/0 Fram'wor1 ND _n #t ngoLi #I(
CU> hVi Fu Nh cPu trD 7i L9n tr9n tBi sao t>i ChDi t& hi3u nhi`u .` c2c ngoBi 7/ .; c2ch th4c
UE 7] c2c ngoBi 7/ khi ch$ng Gc Ch2t sinh
0r* #Wi F) 8iI+ _Uy dOng mYt +h;<ng trnh Png d:ng #- h@t sP+ phP+ tLpf +h;<ng trnh #>n
ti@m n nhng y@> tc 1hng kn =Mnh N- +6 thi ph,t sinh +,+ ngoLi #I d~n =@n nhng #ai
1hng mong m>cn( 8iI+ thO+ hiIn rt gi +,+ ngoLi #I #- h@t sP+ +.n thi@t trong +h;<ng
trnhf n6 +ho phqp +h3ng ta _Uy dOng =;H+ +h;<ng trnh ho-n thiIn h<n N- _n #t +,+ thng
=iIp ngoLi #I tct h<n( 0m hii> nhng ngoLi #I ='m =@n +ho +h3ng ta nhiD> 1inh nghiIm
trong NiI+ _Uy dOng +,+ +h;<ng trnh phP+ tLp h<n(
%Pu hSi th5"
CU> hVi 1) &Jy +ho i@t +,+ t5 1h6a =;H+ sn d:ng =i _n #t ngoLi #Iu
X/L:Ngo,iL4
)A0
NgnNgLpTrnhC#
CU> hVi 2) PhUn iIt gia #ai N- ngoLi #Iu
CU> hVi F) ?hi thO+ hiIn NiI+ rt gi +,+ ngoLi #I( N@> +6 nhiD> mP+ rt gi ngoLi #I th
+h3ng ta s` thO+ hiIn mP+ n-o( 05 +hi ti@t =@n tkng A>,tf hay t5 tkng A>,t =@n +hi ti@tu
CU> hVi G) nghea +7a t5 1h6a Tina##y trong NiI+ _n #t ngoLi #Iu
CU> hVi Q) CU> #Inh n-o =;H+ dCng =i ph,t sinh ngoLi #Iu
CU> hVi v) LoLi n-o sa> =Uy n%n =;H+ _n #t th'o ngoLi #I N- #oLi n-o th n%n =;H+ _n #t gi
+,+ mJ #Inh thng th;Wngu
a( 2i, trM nhp N-o +7a ng;Wi dCng 1hng nbm trong mP+ +ho phqp(
( 0p tin 1hng =;H+ Ni@t m- thO+ hiIn Ni@t(
+( dci m:+ tr>yDn N-o +ho ph;<ng thP+ +hPa gi, trM 1hng hHp #I(
d( dci m:+ tr>yDn N-o +ho ph;<ng thP+ +hPa 1ii> 1hng hHp #I(
CU> hVi w) Ng>y%n nhUn n-o d~n =@n ph,t sinh ngoLi #Iu
CU> hVi x) ?hi n-o th ngoLi #I _>Xt hiInu
a( 0rong 1hi tLo mJ ng>Kn
( 0rong 1hi i%n dM+h
+( 0rong 1hi thO+ thi +h;<ng trnh
d( ?hi y%> +.> =O<+ =;a ta gi ng;Wi dCng +>ci(
CU> hVi y) ?hi n-o th 1hci #Inh trong Tina##y =;H+ thO+ hiInu
CU> hVi 1$) 0rong nam'spa+' n-o +hP+ +,+ #op #i%n A>an =@n NiI+ _n #t +,+ ngoLi #Iu &Jy
+ho i@t mYt sc #op _n #t ngoLi #I A>an trBng trong nam'spa+' n-yu
47i tT-
4-i tp 1u &Jy Ni@t =oLn #Inh =i thO+ hiIn NiI+ rt gia ngoLi #I #i%n A>an =@n +U> #Inh sa>
=Uy)
Ketqua = Sothu1 / Sothu2;
4-i tp 2) Ch;<ng trnh sa> =Uy +6 NXn =D( &Jy _,+ =Mnh NXn =D +6 thi ph,t sinh ngoLi #I 1hi
+hLy +h;<ng trnh( 8- Ni@t #Li +h;<ng trnh ho-n +hZnh gKm +,+ #Inh _n #t ngoLi #I)
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
public class Tester
{
public static void Main()
{
uint so1=0;
int so2, so3;
so2 = -10;
so3 = 0;
// tnh gi tri lai
X/L:Ngo,iL4
)A=
NgnNgLpTrnhC#
so1 -= 5;
so2 = 5/so3;
// xut kt qu
Console.WriteLine(So 1: {0}, So 2:{1}, so1, so2);
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
4-i tp F) Ch;<ng trnh sa> =Uy +6 thi d~n =@n ngoLi #I hay 1hngu N@> +6 th hJy +ho i@t
ngoLi #I +6 thi =;H+ ph,t sinh( &Jy Ni@t #Li +h;<ng trnh ho-n +hZnh +6 _n #t +,+ ngoLi #I
bng +,+h =;a ra thng =iIp ND ngoLi #I =;H+ ph,t sinh(
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
using System;
using System.IO;
public class Tester
{
public static void Main()
{
string fname = test3.txt;
string buffer;
StreamReader sReader = File.OpenText(fname);
while ( (buffer = sReader.ReadLine()) !=null)
{
Console.WriteLine(buffer);
}
}
}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
4-i tp G) &Jy _'m #Li +,+ N9 d: trong +,+ +h;<ng tr;o+f N9 d: n-o +6 thi ph,i sinh ngoLi #I
th hJy th%m +,+ =oLn _n #t ngoLi #I +ho N9 d: =6(
X/L:Ngo,iL4
)AA
NgnNgLpTrnhC#
DAngBis1)C?t1Dio.NETXyDngEngD7ngFinDoGsHorI
)AT

You might also like