NGÔN NGỮ - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · NGÔN NGỮ LẬP TRÌNH c#. Ngôn Ngữ Lập Trình C# Mục Lục 1

  • Upload
    lephuc

  • View
    239

  • Download
    4

Embed Size (px)

Citation preview

  • NGN NG

    LP TRNH c#

  • Ngn Ng Lp Trnh C#

    Mc Lc

    1. Microsoft .NET............................................................................................ 10Tnh hnh trc khi MS.NET ra i...............................................................10

    Ngun gc ca .NET..................................................................................12Microsoft .NET................................................................................................. 12

    Tng quan.................................................................................................. 12Kin trc .NET Framework....................................................................... 13Common Language Runtime..................................................................... 15Th vin .NET Framework........................................................................16Pht trin ng dng client.......................................................................... 16

    Bin dch v MSIL........................................................................................... 17Ngn ng C#..................................................................................................... 18

    2. Ngn ng C#.................................................................................................20Ti sao phi s dng ngn ng C#................................................................ 20

    C# l ngn ng n gin........................................................................... 20C# l ngn ng hin i.............................................................................21C# l ngn ng hng i tng...............................................................21C# l ngn ng mnh m...........................................................................22C# l ngn ng t t kha.......................................................................... 22C# l ngn ng module ha.......................................................................22C# s l ngn ng ph bin....................................................................... 22

    Ngn ng C# vi ngn ng khc................................................................... 23Cc bc chun b cho chng trnh.............................................................24Chng trnh C# n gin...............................................................................25Pht trin chng trnh minh ha................................................................... 31Cu hi & bi tp..............................................................................................35

    3. Nen tng ngn ng C#............................................................................... 39Kiu d liu.......................................................................................................40

    Kiu d liu xy dng sn......................................................................... 41Chn kiu d liu...................................................................................... 42Chuyn i kiu d liu.............................................................................43

    Bin v hng..................................................................................................... 44Gn gi tr xc nh cho bin.....................................................................45Hng.......................................................................................................... 46Kiu lit k................................................................................................ 47

    2

  • Ngn Ng Lp Trnh c#

    Kicu chui k t...........................................................................................50nh danh.....................................................................................................50

    Biu thc.............................................................................................................. 50Khong trng........................................................................................................51Cu lnh................................................................................................................51

    Phn nhnh khng c iu kin....................................................................52Phn nhnh c iu kin.............................................................................. 53Cu lnh lp..................................................................................................60

    Ton t................................................................................................................. 68Namespace...........................................................................................................76Cc ch dn bin dch......................................................................................... 80Cu hi & bi tp................................................................................................ 82

    4. Xy dng lp - i tng............................................................................87nh ngha lp................................................................................................ 88

    Thuc tnh truy cp.......................................................................................91Tham s ca phng thc............................................................................92

    To i tng...................................................................................................... 93B khi dng................................................................................................93Khi to bin thnh vin..............................................................................96B khi dng sao chp.................................................................................98T kha this................................................................................................. 99

    S dng cc thnh vin static..........................................................................100Gi phng thc static............................................................................... 101S dng b khi dng static....................................................................... 101S dng b khi dng private....................................................................102S dng thuc tnh static............................................................................102

    Hy i tng....................................................................................................104Truyn tham s..................................................................................................107Np chng phng thc...................................................................................112ng gi d liu vi thuc tnh......................................................................116Thuc tnh ch c............................................................................................119Cu hi & bi tp.............................................................................................. 121

    5. K tha - a hnh........................................................................................125c bit ha v tng qut ha.........................................................................126S k tha.......................................................................................................... 129

    Thc thi k tha......................................................................................... 129Gi phng thc khi dng ca lp c s.................................................131Gi phng thc ca lp c s.................................................................. 132

    3

  • Ngn Ng Lp Trnh c#

    iu khin truy xut................................................................................... 132a hnh................................................................................................................133

    Kiu a hnh................................................................................................133Phng thc a hnh............................................................................... 133T kha new v override........................................................................ 137

    Lp tru tng.................................................................................................. 139Gc ca tt c cc lp- lp Object...........................................................142

    Boxing v Unboxing d liu........................................................................... 144Boxing d liu ngm nh.......................................................................... 144Unboxing phi thc hin tng minh..................................................... 145

    Cc lp lng nhau...........................................................................................147Cu hi & bi tp............................................................................................149

    6. Np chng ton t........................................................................................153S dng t kha operator.................................................................................153H tr ngn ng .NET khc............................................................................ 154S dng ton t................................................................................................. 154Ton t so snh bng..................................................................................... 156Ton t chuyn i........................................................................................... 157Cu hi & bi tp.............................................................................................. 163

    7. Cu trc................................................................................................................165nh ngha mt cu trc...................................................................................165To cu trc....................................................................................................... 168

    Cu trc l mt kiu gi tr..................................................................... 168Gi b khi dng mc nh.................................................................... 169To cu trc khng gi new....................................................................... 170

    Cu hi & bi tp.............................................................................................. 1728. Thc thi giao din..................................................................................... 176

    Thc thi giao din............................................................................................. 177Thc thi nhiu giao in......................................................................... 180M rng giao din.......................................................................................181Kt hp cc giao din................................................................................. 181

    Truy cp phng thc giao din...................................................................187Gn i tng cho giao din...................................................................... 187Ton t is....................................................................................................188Ton t as................................................................................................... 190Giao din i lp vi tru tng................................................................192

    Thc thi ph quyt giao din........................................................................193Thc thi giao din tng minh........................................................................197

    4

  • Ngn Ng Lp Trnh c#

    La chn th hin phng thc giao din................................................. 200n thnh vin............................................................................................ 200

    Cu hi & bi tp.............................................................................................. 2079. Mng, ch mc, v tp hp.....................................................................211

    Mng................................................................................................................... 212Khai bo mng...........................................................................................213Gi t mc nh......................................................................................... 214Truy cp cc thnh phn trong mng.........................................................214Khi to thnh phn trong mng............................................................... 216S dng t kha params............................................................................ 216

    Cu lnli reach................................................................................................218Mng a chiu................................................................................................... 220

    Mng a chiu cng kch thc.................................................................220Mng a chiu c kch thc khc nhau................................................... 224Chuyn i mng.......................................................................................227

    B ch mc......................................................................................................... 232B ch mc v php gn............................................................................ 236S dng kiu chi s khc...........................................................................237

    Giao din tp hp............................................................................................. 241Giao din IEnumerable............................................................................. 242Giao din ICollection................................................................................246

    Danh sch mng................................................................................................ 247Thc thi IComparable............................................................................... 251Thc thi IComparer...................................................................................254

    Hng i............................................................................................................259Ngn xp........................................................................................................... 262Kiu t in.......................................................................................................265

    Hastables................................................................................................... 266Giao din IDictionary................................................................................267Tp kha v tp gi tr........................................................................... 269Giao din IDictionaryEnumerator.............................................................270

    Cu hi & bi tp.............................................................................................. 27110. X l chui...................................................................................................275

    Lp i tng string......................................................................................... 276To mt chui............................................................................................276To mt chui dng phng thc ToString..............................................277Thao tc trn chui....................................................................................278Tm mt chui con.................................................................................... 285

    5

  • Ngn Ng Lp Trnh c#

    Chia chui..................................................................................................286Thao tc trn chui dng SingBuilder.....................................................288

    Cc biu thc quy tc.......................................................................................290S dng biu thc quy tc qua lp Regex..................................................291S dng Regex tm tp hp.................................................................. 294S dng Regex gom nhm....................................................................295S dng CaptureCollection........................................................................298

    Cu hi & bi tp..............................................................................................30111. C ch y quyn v s kin.................................................................... 303

    y quyn............................................................................................................304S dng y quyn xc nhn phng thc lc Ihc thi.............................. 304y quyn tnh.............................................................................................314Dng y quyn nh thuc tnh...................................................................315Thit lp th t thi hnh vi mng y quyn.............................................316Multicasting............................................................................................... 320

    S kin...............................................................................................................324C ch publishing- subscribing................................................................. 324S kin v y quyn...................................................................................325

    Cu hi & bi tp..............................................................................................33312. Cc lp c s .NET................................................................................... 335

    Lp i tng trong .NET Framework..........................................................335Lp Timer......................................................................................................... 337Lp v th mc v h thng........................................................................... 340Lp Math...........................................................................................................342Lp thao tc tp tin.......................................................................................... 345Lm vic vi tp tin d liu............................................................................ 351Cu hi & bi tp............................................................................................. 362

    13. X l ngoi l............................................................................................364Pht sinh v bt gi ngoi l...........................................................................365

    Cu lnh throw...........................................................................................365Cu lnh catch........................................................................................... 367Cu lnh finally..........................................................................................373

    Nhng i tng ngoi l............................................................................... 375To ring cc ngoi l..................................................................................... 378Pht sinh li ngoi l........................................................................................ 381Cu hi & bi tp............................................................................................. 385

    6

  • Ngn Ng Lp Trnh C#

    Tham Kho

    Gio trnh Ngn ng Lp trnh c# c bin dch v tng hp t:Programming c#, Jesse Liberty, OReilly.C# in 21 Days, Bradley L.Jones, SAMS.Windows Forms Programming with c#, Erik Brown, Manning.MSDN LibraryV April 2002.

    Quy c

    Gio trnh s dng mt s quy c nh sau:Cc thut ng c gii thiu ln u tin s in nghing.M ngun ca chng trnh minh ha dng font Verdana -10.Cc t kha ca C# dng font Verdana-10, m hoc Verdana-10, bnh thng. Tn namspace, lp, i tng, phng thc, thuc tnh, s kin... dng font Verdana- 10.

    Ket qu ca chng trnh xut ra mn hnh console dng font Courier New-10.

    7

  • Ngn Ng Lp Trnh C#

    Chng 1

    MICROSOFT .NET

    Tnh hnh trc khi MS.NET ra i

    Ngun gc ca .NET

    Microsoft .NET

    Tng quan

    Kin trc .NET Framework

    Common Language Runtime (CLR)

    Th vin .NET Framework

    Pht trin ling dng client

    Bin dch v MSIL

    Ngn ng C#

    Tnh hnh trc khi MS.NET ra iTrong lnh vc cng ngh thng tin ca th gii ngy nay, vi s pht trin lin tc v a

    dng nht l phn mm, cc h iu hnh, cc mi trng pht trin, cc ng dng lin tc ra i. Tuy nhin, i khi vic pht trin khng ng nht v nht l do li ch khc nhau ca cc cng ty phn mm ln lm nh hng n nhng ngi xy dng phn mm.

    Cch y vi nm Java c Sun vit ra, c sc mnh ng k, n hng ti vic chy trn nhiu h iu hnh khc nhau, c lp vi b x l (Intel, Rise,...). c bit l Java rt thch hp cho vic vit cc ng dng trn Internet. Tuy nhin, Java li c hn ch v mt tc v trn thc t vn cha thnh hnh. Mc d Sun Corporation v IBM c y mnh Java, nhng Microsoft dng ASP lm gim kh nng nh hng ca Java.

    e lp trnh trn Web, lu nay ngi ta vn dng CGI-Perl v gn y nht l PHP, mt ngn ng ging nh Perl nhng tc chy nhanh hn. Ta c th trin khai Perl trn Unix/Linux hay MS Windows. Tuy nhin c nhiu ngi khng thch dng do bn thn ngn ng hay cc qui c khc thng v Perl khng c pht trin thng nht, cc cng c c xy dng cho Perl tuy rt mnh nhng do nhiu nhm pht trin v ngi ta khng m bo rng tng lai ca n ngy cng tt p hn.

    8Microsoft .NET

  • Ngn Ng Lp Trnh C#

    Trong gii pht trin ng dng trn Windows ta c th vit ng dng bng Visual C++, Delphi hay Visual Basic, y l mt s cng c ph bin v mnh. Trong Visual C++ l mt ngn ng rt mnh v cng rt kh s dng. Visual Basic th n gin d hc, d dng nht nn rt thng dng. L do chnh l Visual Basic gip chng ta c th vit chng trnh trn Windows d dng m khng cn thit phi bit nhiu v cch thc MS Windows hoi ng, ta ch cn bit mt s kin thc cn bn ti thiu v MS Windows l c th lp trnh c. Do theo quan im ca Visual Basic nn n lin kt vi Windows l iu t nhin v d hiu, nhng hn ch l Visual Basic khng phi ngn ng hng i tng (Object Oriented).

    Delphi l hu du ca Turbo Pascal ca Borland. N cng ging v tng i d dng nh Visual Basic. Delphi l mt ngn ng hng i tng. Cc iu khin dng trn Form ca Delphi u c t ng khi to m ngun. Tuy nhin, chc nng khi ng m ngun ny ca Delphi i khi gp rc ri khi c s can thip ca ngi dng vo. Sau ny khi cng ty Borland b bn v cc chuyn gia xy dng nn Delphi chy qua bn Microsoft, v Delphi khng cn c pht trin tt na, ngi ta khng dm u t trin khai phn mm vo Delphi. Cng ty sau ny pht trin dng sn phm Jbuilder (dng Java) khng cn quan tm n Delphi.

    Tuy Visual Basic bn hn do khng cn phi khi to m ngun trong Form khi thit k nhng Visual Basic cng c nhiu khuyt im :

    Khng h tr thit k hng i tng, nht l kh nng tha k (inheritance).Gii hn v vic chy nhiu tiu trnh trong mt ng dng, v d ta khng th dng Visual Basic vit mt Service kiu NT.Kh nng x l li rt yu, khng thch hp trong mi trng Multi- tier Kh dng chung vi ngn ng khc nh C++.Khng c User Interface thch hp cho Internet.

    Do Visual Basic khng thch hp cho vit cc ng Web Server nn Microsoft to ra ASP (Active Server Page). Cc ang ASP ny va c tag HTML va cha cc on script (VBScript, JavaScript) nm ln ln nhau. Khi x l mt trang ASP, nu l tag HTML th s c gi thng qua Browser, cn cc script th s c chuyn thnh cc dng HTML ri gi i, ngoi tr cc function hay cc sub trong ASP th v tr cc script khc rt quan trng.Khi mt s chc nng no c vit tt ngi ta dch thnh ActiveX v a n vo Web Server. Tuy nhin v l do bo mt nn cc ISP (Internet Service Provider) lm my ch cho Web site thng rt d t khi ci ActiveX l trn my ca h. Ngoi ra vic tho g cc phin bn ca ActiveX ny l cng vic rt kh, thng xuyn lm cho Administrator nhc u. Nhng ngi tng qun l cc version ca DLL trn Windows iu than phin ti sao phi ng k cc DLL v nht l ch c th ng k mt phin bn ca DLL m thi. V t DLL Heir xut hin tc l a ngc DLL...

    9Microsoft -NET

  • Ngn Ng Lp Trnh C#

    Sau ny gip cho vic lp trnh ASP nhanh hn th cng c Visual InterDev, mt IDE (Integrated Development Environment) ra i. Visual InterDev to ra cc Design Time Controls cho vic thit k cc iu khin trn web,... Tic thay Visual InterDev khng bn vng lm nn sau mt thi gian th cc nh pht trin ri b n.

    Tm li bn thn ca ASP hy cn mt s khuyt im quan trng, nht l khi chy trn Internet Information Server vi Windows NT 4, ASP khng ng tin cy lam.

    Tm li trong gii lp trnh theo Microsoft th vic lp trnh trn desktop cho n lp trnh h phn tn hay trn web l khng c nhp nhng cho lm. chuyn c t lp trnh client hay desktop n lp trnh web l mt chng ng di.

    Ngun gc .NETu nm 1998, sau khi hon tt phin bn Version 4 ca Internet Information Server

    (IIS), cc i ng lp trnh Microsoft nhn thy h cn rt nhiu sng kin kin ton IIS. H bt u xy dng mt kin trc mi trn nn tng tng v t tn l Next Generation Windows Services (NGWS).

    Sau khi Visual Basic c trnh lng vo cui 1998, d n k tip mang tn Visual Studio 7 c xc nhp vo NGWS. i ng COM+/MTS gp vo mt universal runtime cho tt c ngn ng lp trnh chung trong Visual Studio, v tham vng ca h cung cp cho cc ngn ng lp trnh ca cc cng ty khc dng chung lun. Cng vic ny c xc tin mt cch hon ton b mt mi cho n hi ngh Professional Developers Conference Orlado vo thng 7/2000. en thng 11/2000 th Microsoft pht hnh bn Beta 1 ca .NET gm 3 a CD. Tnh n lc ny th Microsoft lm vic vi .NET gn 3 nm ri. do bn Beta 1 n)' tng i vng chc.

    .NET mang dng dp ca nhng sng kin c p dng trc y nh p-code trong UCSD Pascal cho n Java Virtual Machine. C iu l Microsoft gp nht nhng sng kin ca ngi khc, kt hp vi sng kin ca chnh mnh lm nn mt sn phm hon chnh t bn trong ln bn ngoi. Hin ti Microsoft cng b phin bn release ca .NET.

    Tht s Microsoft t cc vo .NET v theo thng tin ca cng ty, tp trung 80% sc mnh ca Microsoft nghin cu v trin khai .NET (bao gm nhn lc v ti chnh ?), tt c cc sn phm ca Microsoft s c chuyn qua .NET.

    Microsoft .NET

    Tng quan

    Microsoft .NET gm 2 phn chnh : Framework v Integrated Development Envonment (IDE). Framework cung cp nhng g cn thit v cn bn, ch Framework c ngha l khung hay khung cnh trong ta dng nhng h tng c s theo mt qui c nht nh cng vic c tri chy. IDE th cung cp mt mi trng gip chng ta trien khai d dng, v nhanh chng cc ng dng da trn nn tng .NET. Neu khng c IDE chng ta cng c th

    10Microsoft -NET

  • Ngn Ng Lp Trnh C#

    dng mt trnh son tho v nh Notepad hay bt c trnh son tho vn bn no v s dng command line bin dch v thc thi, tuy nhin vic ny mt nhiu thi gian. Tt nht l chng ta dng IDE pht trin cc ng dng, v cng l cch d s dng nht.

    Thnh phn Framework l quan trng nht .NET l ct li v tinh hoa ca mi trng, cn IDE ch l cng c pht trin da trn nn tng thi. Trong .NET ton b cc ngn ng c#, Visual c++ hay Visual Basic.NET u dng cng mt IDE.

    Tm li Microsoft .NET l nn tng cho vic xy dng v thc thi cc ng dng phn tn th h k tip. Bao gm cc ng dng t client n server v cc dch v khc. Mt s tnh nng ca Microsoft .NET cho php nhng nh pht trin s dng nh sau:

    Mt m hnh lp trnh cho php nh pht trin xy dng cc ng dng dch v web v ng dng client vi Extensible Markup Language (XML).Tp hp dch v XML Web, nh Microsoft .NET My Services cho php nh pht trin n gin v tch hp ngi dng kinh nghim.Cung cp cc server phc v bao gm: Windows 2000, SQL Server, v BizTalk Server, tt c iu tch hp, hot ng, v qun l cc dch v XML Web v cc ng dng.Cc phn mem client nh Windows XP v Windows CE gip ngi pht trien phn phi su v thuyt phc ngi dng kinh nghim thng qua cc dng thit b.Nhiu cng c h tr nh Visual Studio .NET, pht trin cc dch v Web XML, ng dng trn nn Windows hay nn web mt cch d dng v hiu qu.

    Kin trc .NET Framework.NET Framework l mt platform md lm n gin vic pht trien ng dng trong mi

    trng phn tn ca Internet. .NET Framework c thit k y p ng theo quan im sau:

    e cung cp mt mi trng lp trnh hng i tng vng chc, trong m ngun i tng c lu tr v thc thi mt cch cc b. Thc thi cc b nhng c phn tn trn Internet, hoc thc thi t xa. cung cp mt mi trng thc thi m ngun m ti thiu c vic ng gi phn mm v s tranh chp v phin bn.e cung cp mt mi trng thc thi m ngun m m bo vic thc thi an ton m ngun, bao gm c vic m ngun c to bi hng th ba hay bt c hng no m tun th theo kin trc .NET.e cung cp mt mi trng thc thi m ngun m loi b c nhng li thc hin cc script hay mi trng thng dch.e lm cho nhng ngi pht trin c kinh nghim vng chc c th nm vng nhiu kiu ng dng khc nhau. Nh l t nhng ng dng trn nn Windows n nhng ng dng da trn web.

    11Microsoft .NET

  • Ngn Ng Lp Trnh C#

    e xy dng tt c cc thng tin da trin tiu chun cng nghip m bo rng m ngun trn .NET c th tch hp vi bt c m ngun khc.

    .NET Framework c hai thnh phn chnh: Common Language Runtime (CLR) v thu vin lp .NET Framework. CLR l nn tng ca .NET Framework. Chng ta c th hiu runtime nh l mt agent qun l m ngun khi n c thc thi, cung cp cc dch v ct li nh: qun l b nh, qun l tiu trnh, v qun l t xa. Ngoi ra n cn thc y vic s dng kiu an ton v cc hnh thc khc ca vic chnh xc m ngun, m bo cho vic thc hin c bo mt v mnh m. Tht vy, khi nim qun l m ngun l nguyn l nn tng ca runtime. M ngun m ch ti runtime th c bit nh l m ngun c qun l (managed code). Trong khi m ngun m khng c ch ti runtime th c bit nh m ngun khng c qun l (unmanaged code).

    Th vin lp, mt thnh phn chnh khc ca .NET Framework l mt tp hp hng i tng ca cc kiu d liu c dng li, n cho php chng ta c th pht trin nhng ng dng t nhng ng dng truyn thng command-line hay nhng ng dng c giao din ha (GUI) n nhng ng dng mi nht c cung cp bi ASP.NET, nh l Web Form v dch v XML Web.

    5jiass. Runtime Operating system/ library Hardware

    InternetInformation

    Services

    ASP.NET(Runbme)

    Managed Web applications

    Managed applications Unmanagcd applications

    Hnh 1.1: M t cc thnh phn trong .NETFramework.

    12Microsoft -NET

  • Ngn Ng Lp Trnh C#

    Common Language Runtime (CLR)Nh cp th CLR thc hin qun l b nh, qun l thc thi tiu trnh, thc thi m

    ngun, xc nhn m ngun an ton, bin bch v cc dch v h thng khc. Nhng c tnh trn l nn tng c bn cho nhng m ngun c qun l chy trn CLR.

    Do ch trng n bo mt, nhng thnh phn c qun l c cp nhng mc quyn hn khc nhau, ph thuc vo nhiu yu t nguyn thy ca chng nh: lin quan n Internet, h thng mng trong nh my, hay mt my tnh cc b. iu ny c ngha rng, mt thnh phn c qun l c th c hay khng c quyn thc hin mt thao tc truy cp tp tin, thao tc truy cp registry, hay cc chc nng nhy cm khc.

    CLR thc y vic m ngun thc hin vic truy cp c bo mt. V d, ngi s dng gii hn rng vic thc thi nhng vo trong mt trang web c th chy c hot hnh trn mn hnh hay ht mt bn nhc, nhng khng th truy cp c d liu ring t, tp tin h thng, hay truy cp mng. Do , c tnh bo mt ca CLR cho php nhng phn mm ng gi trn Inemet c nhiu c tnh m khng nh hng n vic bo mt h thng.

    CLR cn thc y cho m ngun c thc thi mnh m hon bng vic thc thi m ngun chnh xc v s xc nhn m ngun. Nen tng ca vic thc hin ny l Common Type System (CTS). CTS m bo rng nhng m ngun c qun l th c t m t (selfdescribing). S khc nhau gia Microsoft v cc trnh bin dch ngn ng ca hng th ba l vic to ra cc m ngun c qun l c th thch hp vi CTS. iu ny th m ngun c qun l c the s dng nhng kiu c qun l khc v nhng th hin, trong khi thc y nghim ngt vic s dng kiu d liu chnh xc v an ton.

    Thm vo , mi trng c qun l ca runtime s thc hin vic t ng x l layout ca i tng v qun l nhng tham chiu n i tng, gii phng chng khi chng khng cn c s dng na. Vic qun l b nh t ng ny cn gii quyt hai li chung ca ng dng: thiu b nh v tham chiu b nh khng hp l.

    Trong khi runtime c thit k cho nhng phn mm ca tng lai, n cng h tr cho phn mm ngy nay v trc y. Kh nng hot ng qua li gia m ngun c qun l v m ngun khng c qun l cho php ngi pht trin tip tc s dng nhng thnh phn cn thit ca COM v DLL.

    Rutime c thit k ci tin hiu sut thc hin. Mc d CLR cung cp nhiu cc tiu chun dch v runtime, nhng m ngun c qun l khng bao gi c dch. C mt c tnh gi l Just-in-Time (JIT) bin dch tt c nhng m ngun c qun l vo trong ngn ng my ca h thng vo lc m n c thc thi. Khi , trinh qun l b nh xa b nhng phn mnh b nh nu c th c v gia tng tham chiu b nh cc b, v kt qu gia tng hiu qu thc thi.

    13Microsoft -NET

  • Ngn Ng Lp Trnh C#

    Th vin lp .NET FrameworkTh vin lp .NET Framework l mt tp hp nhng kiu d liu c dng li v c

    kt hp cht ch vi Common Language Runtime. Th vin lp l hng i tng cung cp nhng kiu d liu m m ngun c qun l ca chng ta c th dn xut. iu ny khng ch lm cho nhng kiu d liu ca .NET Framework d s dng m cn lm gim thi gian lin quan n vic hc c tnh mi ca .NET Framework. Thm vo , cc thnh phn ca cc hng th ba c th tch hp vi nhng lp trong .NET Framework.

    Cng nh mong i ca ngi pht trin vi th vin lp hng i tng, kiu d liu . NET Framework cho php ngi pht trin thit lp nhiu mc thng dng ca vic lp trnh, bao gm cc nhim v nh: qun l chui, thu thp hay chn lc d liu, kt ni vi c c d liu, v truy cp tp tin. Ngoi nhng nhim v thng dng trn. Th vin lp cn a vo nhng kiu d liu h tr cho nhng kch bn pht trin chuyn bit khc. V d ngi pht trin c th s dng .NET Framework pht trin nhng kiu ng dng v dch v nh

    ng dng Console ng dng giao din GUI trn Windows (Windows Forms) ng dng ASP.NET Dch v XML Web Dch v Windows

    Trong nhng lp Windows Forms cung cp mt tp hp ln cc kiu d liu nhm lm n gin vic pht trin cc ng dng GUI chy trn Windows. Cn nu nh vit cc ng dng ASP.NET th c th s dng cc lp Web Forms trong th vin .NET Framework.

    Pht trin ng dng ClientNhng ng dng client cng gn vi nhng ng dng kiu truyn thng c lp trnh

    da trcn Windows. y l nhng kiu ng dng hin th nhng ca s hay nhng form trn desktop cho php ngi dng thc hin mt thao tc hay nhim v no . Nhng ng dng client bao gm nhng ng dng nh x l vn bn, x l bng tnh, nhng ng dng trong lnh vc thng mi nh cng c nhp liu, cng c to bo co...Nhng ng dng client ny thng s dng nhng ca so, menu, toolbar, button hay cc thnh phn GUI khc, v chng thng truy cp cc ti nguyn cc b nh l cc tp tin h thng, cc thit b ngoi vi nhu my in.

    Mt loi ng dng client khc vi ng dng truyn thng nh trn l ActiveX control (hin nay n c thay th bi cc Windows Form control) c nhng vo cc trang web trn Internet. Cc ng dng ny cng ging nh nhng ng dng client khc l c th truy cp ti nguyn cc b.

    Trong qu kh, nhng nh pht trin c th to cc ng dng s dng C/C++ thng qua kt ni vi MFC hoc s dng mi trng pht trin ng dng nhanh (RAD: Rapid

    14Microsoft .NET

  • Ngn Ng Lp Trnh C#

    Application Development). .NET Framework tch hp din mo ca nhng sn phm thnh mt. Mi trng pht trin c nh lm n gin mnh m s pht trin ca ng dng client.

    Nhng lp .NET Framework cha trong .NET Framework c thit k cho vic s dng pht trin cc GUI. iu ny cho php ngi pht trin nhanh chng v d dng to cc ca s, button, menu, toolbar, v cc thnh phn khc trong cc ng dng c vit phc v cho lnh vc thng mi. V d nh, .NET cung cp nhng thuc tnh on gin hiu chnh cc hiu ng visual lin quan n form. Trong vi trng hp h iu hnh khng h tr vic thay i nhng thuc tnh ny mt cch trc tip, v trong trng hp ny .NET t ng to li form. y l mt trong nhiu cch m .NET tch hp vic pht trin giao din lm cho m ngun n gin v mnh m hn.

    Khng ging nh ActiveX control, Windows Form control c s truy cp gii hn n my ca ngi s dng. iu ny c ngha rng m ngun thc thi nh phn c th truy cp mt vi ti nguyn trong my ca ngi s dng (nh cc thnh phn ha hay mt s tp tin c gii hn) m khng th truy cp n nhng ti nguyn khc. Nguyn nhn l s bo mt truy cp ca m ngun. Lc ny cc ng dng c ci t trn my ngi dng c th an ton a ln Internet

    Bin dch v MSILTrong .NET Framework, chng trnh khng c bin dch vo cc tp tin thc thi m

    thay vo chng c bin dch vo nhng tp tin trung gian gi l Microsoft Intermediate Language (MSIL). Nhng tp tin MSIL c to ra t C# cng tng t nh cc tp tin MSIL c to ra t nhng ngn ng khc ca .NET, platform y khng cn bit ngn ng ca m ngun. iu quan trng chnh yu ca CLR l chung (common), cng mt runtime h tr pht trin trong C# cng nh trong VB.NET.

    M ngun C# c bin dch vo MSIL khi chng ta build project. M MSIL ny c lu vo trong mt tp tin trn a. Khi chng ta chy chng trnh, th MSIL c bin dch mt ln na, s dng trnh bin dch Just-In-Time (JIT). Ket qu l m my c thc thi bi b x l ca my.

    Trnh bin dch JIT tiu chun th thc hin theo yu cu. Khi mt phng thc c gi, trnh bin dch JIT phn tch MSIL v to ra sn phm m my c hiu qu cao, m ny c th chy rt nhanh. Trnh bin dch JIT thng minh nhn ra khi mt m c bin dch, do vy khi ng dng chy th vic bin dch ch xy ra khi cn thit, tc l ch bin dch m MSIL cha bin dch ra m my. Khi mt ng dng .NET thc hin, chng c xu hng l chy nhanh v nhanh hon na, cng nh l nhng m ngun c bin dch ri th c dng

    Do tt c cc ngn ng .NET Framework cng to ra sn phm MSIL ging nhau, nn kt qu l mt i tng c to ra t ngn ng ny c th c truy cp hay c dn xut t

    15Microsoft -NET

  • Ngn Ng Lp Trnh C#

    mt i tng ca ngn ng khc trong .NET. V d, ngi pht trin c th to mt lp c s trong VB.NET v sau dn xut n trong C# mt cch d dng.

    Ngn ng C#Ngn ng C# kh n gin, ch khong 80 t kha v hn mi my kiu d liu c

    xy dng sn. Tuy nhin, ngn ng C# c ngha cao khi n thc thi nhng khi nim lp trnh hin i. C# bao gm tt c nhng h tr cho cu trc, thnh phn component, lp trnh hng i tng. Nhng tnh cht hin din trong mt ngn ng lp trnh hin i. V ngn ng C# hi nhng iu kin nh vy, horn na n c xy dng trn nn tng ca hai ngn ng mnh nht l C++ v Java.

    Ngn ng C# c pht trin bi i ng k s ca Microsoft, trong ngi dn u l Anders Hejlsberg v Scott Wiltamuth. C hai ngi ny iu l nhng ngi ni ting, trong Anders Hejlsberg c bit n l tc gi ca Turbo Pascal, mt ngn ng lp trnh PC ph bin. V ng ng u nhm thit k Borland Delphi, mt trong nhng thnh cng u tin ca vic xy dng mi trng pht trin tch hp (IDE) cho lp trnh clienserver.

    Phn ct li hay cn gi l tri tim ca bt c ngn ng lp trnh hng i tng l s h tr ca n cho vic nh ngha v lm vic vi nhng lp. Nhng lp th nh ngha nhng kiu d liu mi, cho php ngi pht trin m rng ngn ng to m hnh tt hon gii quyt vn . Ngn ng C# cha nhng t kha cho vic khai bo nhng kiu lp i tng mi v nhng phng thc hay thuc tnh ca lp, v cho vic thc thi ng gi, k tha, v a hnh, ba thuc tnh c bn ca bt c ngn ng lp trnh hng i tng.

    Trong ngn ng C# mi th lin quan n khai bo lp iu c tm thy trong phn khai bo ca n. nh ngha mt lp trong ngn ng C# khng i hi phi chia ra tp tin header v tp tin ngun ging nh trong ngn ng C++. Hon th na, ngn ng C# h tr kiu XML, cho php chn cc tag XML pht sinh t ng cc document cho lp.

    C# cng h tr giao din interface, n c xem nh mt cam kt vi mt lp cho nhng dch v m giao din quy nh. Trong ngn ng c#, mt lp ch c th k tha t duy nht mt lp cha, tc l khng cho a k tha nh trong ngn ng C++, tuy nhin mt lp c th thc thi nhiu giao din. Khi mt lp thc thi mt giao din th n s ha l n s cung cp chc nng thc thi giao din.

    Trong ngn ng c#, nhng cu trc cng c h tr, nhng khi nim ve ng ngha ca n thay i khc vi C++. Trong c#, mt cu trc c gii hn, l kiu d liu nh gn, v khi to th hin th n yu cu t hn v h iu hnh v b nh so vi mt lp. Mt cu trc th khng th k tha t mt lp hay c k tha nhng mt cu trc c th thc thi mt giao din.

    Ngn ng C# cung cp nhng c tnh hng thnh phn (component-oriented), nh l nhng thuc tnh, nhng s kin. Lp trnh hng thnh phn c h tr bi CLR cho php lu tr metadata vi m ngun cho mt lp. Metadata m t cho mt lp, bao gm nhng

    16Microsoft .NET

  • Ngn Ng Lp Trnh C#

    phng thc v nhng thuc tnh ca n, cng nh nhng s bo mt cn thit v nhng thuc tnh khc. M ngun cha ng nhng logic cn thit thc hin nhng chc nng ca n.. Do vy, mt lp c bin dch nh l mt khi self-contained, nn mi trng hosting bit c cch c metadata ca mt lp v m ngun cn thit m khng cn nhng thng tin khc s dng n.

    Mt lu cui cng v ngn ng C# l ngn ng ny cng h tr vic truy cp b nh trc tip s dng kiu con tr ca C++ v t kha cho du ngoc [] trong ton t. Cc m ngun ny l khng an ton (unsafe). V b gii phng b nh t ng ca CLR s khng thc hin vic gii phng nhng i tirng c tham chiu bng s dng con tr cho n khi chng c gii phng.

    17Microsoft -NET

  • Ngn Ng Lp Trnh C#

    Chng 2

    NGON NG C#

    Ti sao phi s dng ngn ng C#

    C# l ngn ng on gin

    C# l ngn ng hin i

    C# l ngn ng hng i tng

    C# l ngn ng mnh m

    C# l ngn ng t t kha

    C# l ngn ng module ha

    C# s l ngn ng ph bin

    Ngn ng C# v nhng ngn ng khc

    Cc bc chun b cho chng trnh

    Chng trnh C# n gin

    Pht trin chng trnh minh ha

    Cu hi & bi tp

    Ti sao phi s dng ngn ng C#Nhiu ngi tin rng khng cn thit c mt ngn ng lp trnh mi. Java, C++, Perl,

    Microsoft Visual Basic, v nhng ngn ng khc c ngh rng cung cp tt c nhng chc nng cn thit.

    Ngn ng C# l mt ngn ng c dn xut t c v C++, nhng n irc to t nn tng pht trin hn. Microsoft bt u vi cng vic trong c v C++ v thm vo nhng c tnh mi lm cho ngn ng ny d s dng hn. Nhiu trong s nhng c tnh ny kh ging vi nhng c tnh c trong ngn ng Java. Khng dng li , Microsoft a ra mt s mc ch khi xy dng ngn ng ny. Nhng mc ch ny c c tm tt nh sau:

    C# l ngn ng on ginC# l ngn ng hin iC# l ngn ng hng i tngC# l ngn ng mnh m v mm do

    18Ngn Ng C#

  • Ngn Ng Lp Trnh C#

    C# l ngn ng c t t kha C# l ngn ng hng module C# s tr nn ph bin

    C# l ngn ng n ginC# loi b mt vi s phc tp v ri rm ca nhng ngn ng nh Java v C++, bao gm

    vic loi b nhng macro, nhng template, a k tha, v lp c s o (virtual base class). Chng l nhng nguyn nhn gy ra s nhm ln hay dn n nhng vn cho cc ngi pht trin C++. Neu chng ta l ngi hc ngn ng ny u tin th chc chn l ta s khng tri qua nhng thi gian hc n! Nhng khi ta s khng bit c hiu qu ca ngn ng C# khi loi b nhng vn trn.

    Ngn ng C# n gin v n da n nn tng c v C++. Neu chng ta thn thin vi c v C++ hoc thm ch l Java, chng ta s thy C# kh ging v din mo, c php, biu thc, ton t v nhng chc nng khc c ly trc tip t ngn ng c v C++, nhng n c ci tin lm cho ngn ng n gin hn. Mt vi trong cc s ci tin l loi b cc d tha, hay l thm vo nhng c php thay i. V d nh, trong C++ c ba ton t lm vic vi cc thnh vin l . , v ->. e bit khi no dng ba ton t ny cng phc tp v d nhm ln. Trong c#, chng c thay th vi mt ton t duy nht gi l . (dot). i vi ngi mi hc th iu ny v nhng vic ci tin khc lm bt nhm ln v n gin hom.

    Ghi ch: Neu chng ta s dng Java v tin rng n n gin, th chng ta cng s tm thy rang C# cng n gin. Hu ht mi ngi u khng tin rang Java l ngn ng n gin. Tuy nhin, C# th d hn l Java v C++.

    C# l ngn ng hin iiu g lm cho mt ngn ng hin i? Nhng c tnh nh l x l ngoi l, thu gom

    b nh t ng, nhng kiu d liu m rng, v bo mt m ngun l nhng c tnh c mong i trong mt ngn ng hin i. C# cha tt c nhng c tnh trn. Neu l ngi mi hc lp trnh c th chng ta s cm thy nhng c tnh trn phc tp v kh hiu. Tuy nhin, cng ng lo lng chng ta s dn dn c tm hiu nhng c tnh qua cc chn trong cun sch ny.

    Ghi ch. Con tr c tch hp vo ngn ng C++. Chng cng l nguyn nhn gy ra nhng rc ri ca ngn ng ny. C# loi b nhng phc tp v rc ri pht sinh bi con tr. Trong c#, b thu gom b nh t ng v kiu d liu an ton c tch hp vo ngn ng, s loi b nhng vn rc ri ca C++.

    C# l ngn ng hng i tngNhng c im chnh ca ngn ng hng i tng (Object-oriented language) l s

    ng gi (encapsulation), s k tha (inheritance), v a hnh (polymorphism). C# h tr tt

    Ngn Ng C#19

  • Ngn Ng Lp Trnh C#

    c nhng c tnh trn. Phn hng i tng ca C# s c trnh by chi tit trong mt chng ring phn sau.

    C# l ngn ng mnh m v cng mm do

    Nh cp trc, vi ngn ng C# chng ta ch b gii hn chnh bi bn thn hay l tr tng tng ca chng ta. Ngn ng ny khng t nhng rng buc ln nhng vic c th lm. C# c s dng cho nhiu cc d n khc nhau nh l to ra ng dng x l vn bn, ng dng ha, bn tnh, hay thm ch nhng trnh bin dch cho cc ngn ng khc.C# l ngn ng t t kha

    C# l ngn ng s dng gii hn nhng t kha. Phn ln cc t kha c s dng m t thng tin. Chng ta c th ngh rng mt ngn ng c nhiu t kha th s mnh hn. iu ny khng phi s tht, t nht l trong trng hp ngn ng c#, chng ta c th tm thy rng ngn ng ny c th c s dng lm bt c nhim v no. Bng sau lit k cc t kha ca ngn ng c#.

    abstract default foreach obiect sizeof unsafe

    as delegate goto operator stackalloc ushort

    base do If out static using

    bool double imDlicit override string virtual

    break else in oarams 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 finallv long return tvDeof

    const fixed namespace sbyte uint

    continue float new sealed ulong

    decimal for null short unchecked

    Bng 1.2: T kha ca ngn ng c#.

    CU l ngn ng hng moduleM ngun c# c th c vit trong nhng phn c gi l nhng lp, nhng lp ny

    cha cc phng thc thnh vin ca n. Nhng lp v nhng phng thc c th c S dng li trong ng dng hay cc chng trnh khc. Bng cch truyn cc mu thng tin n nhng lp hay phng thc chng ta c th to ra nhng m ngun dng li c hiu qu.

    cu s l mt ngn ng ph bin

    Ngn Ng C#20

  • Ngn Ng Lp Trnh C#

    C# l mt trong nhng ngn ng lp trnh mi nht. Vo thi im cun sch ny c vit, n khng c bit nh l mt ngn ng ph bin. Nhng ngn ng ny c mt s l do tr thnh mt ngn ng ph bin. Mt trong nhng l do chnh l Microsoft v s cam kt ca .NET

    Microsoft mun ngn ng C# tr nn ph bin. Mc d mt cng ty khng th lm mt sn phm tr nn ph bin, nhng n c th h tr. Cch y khng lu, Microsoft gp s tht bi v h iu hnh Microsoft Bob. Mc d Microsoft muon Bob tr nn ph bin nhng tht bi. C# thay th tt hn em n thnh cng s vi Bob. Tht s l khng bit khi no mi ngi trong cng ty Microsoft s dng Bob trong cng vic hng ngy ca h. Tuy nhn, vi C# th khc, n c s dng bi Microsoft. Nhiu sn phm ca cng ty ny chuyn i v vit li bng c#. Bng cch s ng ngn ng ny Microsoft xc nhn kh nng ca C# cn thit cho nhng ngi lp trnh.

    Micorosoft .NET l mt l do khc em n s thnh cng ca c#. .NET l mt s thay i trong cch to v thc thi nhng ng dng.

    Ngoi hai l do trcn ngn ng C# cng s tr nn ph bin do nhng c tnh ca ngn ng ny c cp trong mc trc nh: n gin, hng i tng, mnh m... Ngn ng c # v nhng ngn ng khc

    Chng ta tng nghe n nhng ngn ng khc nh Visual Basic, C++ v Java. C l chng ta cng t hi s khc nhau gia ngn ng C# v nhng ngn ng . V cng t hi ti sao li chn ngn ng ny hc m khng chn mt trong nhng ngn ng kia. C rt nhiu l do v chng ta hy xem mt s s so snh gia ngn ng C# vi nhng ngn ng' khc gip chng ta phn no tr li c nhng thc mc.

    Microsoft ni rang C# mang n sc mnh ca ngn ng C++ vi s d dng ca ngn ng Visual Basic. C th n khng d nh Visual Basic, nhng vi phin bn Visual Basic.NET (Version 7) th ngang nhau. Bi v chng c vit li t mt nn tng. Chng ta c th vit nhiu chng trnh vi t m ngun hn nu dng c#.

    Mc d C# loi b mt vi cc c tnh ca C++, nhng b li n trnh c nhng li m thng gp trong ngn ng C++. iu ny c th tit kim c hng gi hay thm ch hng ngy trong vic hon tt mt chng trnh. Chng ta s hiu nhiu v iu ny trong cc chng ca gio trnh.

    Mt iu quan trng khc vi C++ l m ngun C# khng i hi phi c tp tin header. Tt c m ngun c vit trong khai bo mt lp.

    Nh ni bn trn. .NET runtime trong C# thc hin vic thu gom b nh t ng. Do iu ny nn vic s dng con tr trong C# t quan trng hn trong C++. Nhng con tr cng c th c s dng trong c#, khi nhng on m ngun ny s c nh du l khng an ton (unsafe code).

    Ngn Ng C#21

  • Ngn Ng Lp Trnh C#

    C# cng t b tng a k tha nh trong C++. V s khc nhau khc l C# a thm thuc tnh vo tron mt lp ging nh trong Visual Basic. V nhng thnh vin ca lp c gi duy nht bng ton t khc vi C++ c nhiu cch gi trong cc tnh hung khc nhau.

    Mt ngn ng khc rt mnh v ph bin l Java, ging nh C++ v C# c pht trin da trn c. Neu chng ta quyt nh s hc Java sau ny, chng ta s tm c nhiu ci m hc t C# c th c p dng.

    im ging nhau C# v Java l c hai cng bin dch ra m trung gian: C# bin dch ra MSIL cn Java bin dch ra bytccodc. Sau chng c thc hin bng cch thng dch hoc bin dch just-in-time trong tng my o tng ng. Tuy nhin, trong ngn ng Ct nhiu h tr c a ra bin dch m ngn ng trung gian sang m my. C# cha nhiu kiu d liu c bn hn Java v cng cho php nhiu s m rng vi kiu d liu gi tr. V d, ngn ng C# h tr kiu lit k (enumerator), kiu ny c gii hn n mt tp hng c nh ngha trc, v kiu d liu cu trc y l kiu d liu gi tr do ngi dng nh ngha. Chng ta s c tm hiu k hon v kiu d liu tham chiu v kiu d liu gi tr s c trnh by trong phn sau

    Tng t nh Java, C# cng t b tnh a k tha trong mt lp, tuy nhin m hnh k tha on ny c m rng bi tnh a k tha nhiu giao din. Cc bc chun bi cho chng trnh

    Thng thng, trong vic pht trin phn mm, ngi pht trin phi tun th theo quy trnh pht trin phn mm mt cch nghim ngt v quy trnh ny c chun ha. Tuy nhin trong phm vi ca chng ta l tm hiu mt ngn ng mi v vit nhng chng trnh nh th khng i hi kht khe vic thc hin theo quy trnh. Nhng gii quyt c nhng vn th chng ta cng cn phi thc hin ng theo cc bc sau. u tin l phi xc nh vn cn gii quyt. Neu khng bit r vn th ta khng th tm c phng php gii quyt. Sau khi xc nh c vn , th chng ta c th ngh ra cc k hoch thc hin. Sau khi c mt k hoch, th c th thc thi k hoch ny. Sau khi k hoch c thc thi, chng ta phi kim tra li kt qu xem vn c gii quyt xong cha. Logic ny thng c p dng trong nhiu lnh vc khc nhau, trong c lp trnh.

    Khi to mt chng trnh trong C# hay bt c ngn ng no, chng ta nn theo nhng bc tun t sau:

    Xc nh mc tiu ca chng trnh.Xc nh nhng phng php gii quyt vn .To mt chng trnh gii quyt vn .Thc thi chng trinh xem kt qu.

    Ngn Ng C#22

  • Ngn Ng Lp Trnh c#

    V d mc tiu vit chng trnh x l vn bn n gin, mc tiu chnh l xy ng chng trnh cho php son tho v lu tr nhng chui k t hay vn bn. Neu khng c mc tiu th khng th vit c chng trnh hiu qu.

    Bc th hai l quyt nh n phng php vit chng trnh. Bc ny xc nhnhng thng tin no cn thit c s dng trong chng trnh, cc hnh thc no c sdng. T nhng thng tin ny chng ta rt ra c phng php gii quyt vn .

    Bc th ba l bc ci t, bc ny c th dng cc ngn ng khc nhau ci t,tuy nhin, ngn ng ph hp gii quyt vn mt cch tt nht s c chn. Trongphm vi ca sch ny chng ta mc nh l dng c#, n gin l chng ta ang tm hiu n!V bc cui cng l phn thc thi chng trnh xem kt qu.

    Chng trnh c# om gine bt u cho vic tm hiu ngn ng c# v to tin cho cc chng sau, chng u

    tin trnh by mt chng trnh c# n gin nht.& V d 2.1 : Chng trnh c# u tin.

    class ChaoMung

    {

    static void Main( )

    {// Xuat ra man hinh

    System.Console.WriteUne("Chao Mung");

    >

    Kt qu:Chao Mung

    Sau khi vit xong chng ta lu di dng tp tin c phn m rng *.cs (C sharp). Sau bin dch v chy chng trnh. Ket qu l mt chui Chao Mung s xut hin trong mn hnh console.

    Cc mc sau s gii thiu xoay quanh v d 2.1, cn phn chi tit tng loi s c trnh by trong cc chng k tip.

    Lp, i tng v kiu d liu (type)iu ct li ca lp trnh hng i tng l to ra cc kiu mi. Kiu l mt th c

    xem nh tru tng. N c th l mt bng d liu, mt tiu trnh, hay mt nt lnh trong mt ca s. Tm li kiu c nh ngha nh mt dng va c thuc tnh chung (properties) v cc hnh vi ng x (behavior) ca n.

    23Ngn Ng c#

  • Ngn Ng Lp Trnh C#

    Nu trong mt ng dng trn Windows chng ta to ra ba nt lnh OK, Cancel, Help, th thc cht l chng ta ang dng ba th hin ca mt kiu nt lnh trong Windows v cc nt ny cng chia x cc thuc tnh v hnh vi chung vi nhau. V d, cc nt c cc thuc tnh nh kch thc, v tr, nhn tn (label), tuy nhin mi thuc tnh ca mt th hin khng nht thit phi ging nhau, v thng th chng khc nhau, nh nt OK c nhn l OK, Cancel c nhn l Cancel...Ngoi ra cc nt ny c cc hnh vi ng x chung nh kh nng v, kch hot, p ng cc thng ip nhn,.. .Ty theo tng chc nng c bit ring ca tng loi th ni dung ng x khc nhau, nhng tt c chng c xem nh l cng mt kiu.

    Cng nh nhiu ngn ng lp trnh hng i tng khc, kiu trong C# c nh ngha l mt lp (class), v cc th hin ring ca tng lp c gi l i tng (object). Trong cc chng k tip s trnh by cc kiu khc nhau ngoi kiu lp nh kiu lit k, cu trc v kiu y quyn (delegates).

    Quay li chng trnh ChaoMung trn, chng trnh ny ch c mt kiu n gin l lp ChaoMung. e nh ngha mt kiu lp trong C# chng ta phi dng t kho class, tip sau l tn lp trong v d trcn tn lp l ChaoMung. Sau nh ngha cc thuc tnh v hnh ng cho lp. Thuc tnh v hnh ng phi nm trong du { >.

    Ghi ch: Khai bo lp trong C# khng c du ; sau ngoc } cui cng ca lp. V khc vi lp trong C/C++ l chia thnh 2 phn header v phn nh ngha. Trong C# , nh ngha mt lp c gi gn trong du { } sau tn lp v trong cng mt tp tin.

    Phng thcHai thnh phn chnh cu thnh mt lp l thuc tnh hay tnh cht v phng thc hay

    cn gi l hnh ng ng x ca i tng. Trong C# hnh vi c nh ngha nh mt phng thc thnh vin ca lp.

    Phng thc chnh l cc hm c nh ngha trong lp. Do , ta cn c th gi cc phng thc thnh vin l cc hm thnh vin trong mt lp. Cc phng thc ny ch ra rng cc hnh ng m lp c th lm c cng vi cch thc lm hnh ng . Thng thng, tn ca phng thc thng c t theo tn hnh ng, v d nh Draw Li ne() hay Getstring().

    Tuy nhin trong v d 2.1 va trnh by, chng ta c hm thnh vin l Main() hm ny l hm c bit, khng m t hnh ng no ca lp ht, n c xc nh l hm u vo ca lp (entry point) v c CRL gi u tin khi thc thi.

    Ghi ch: Trong c#, hm Main() c vit k t hoa u, v c th tr v gi tr void hayint

    Khi chng trnh thc thi, CLR gi hm Main() u tin, hm Main() l u vo ca chng trnh, v mi chng trnh phi c mt hm MainQ. i khi chng trnh c nhiu hm Main() nhng lc ny ta phi xc nh cc ch dn bin dch CLR bit u l hm MainQ u vo duy nht trong chng trnh.

    Ngn Ng C#24

  • Ngn Ng Lp Trnh C#

    Vic khai bo phng thc c xem nh l mt s giao c gia ngi to ra lp v ngi s dng lp ny. Ngi xy dng cc lp cng c th l ngi dng lp , nhng khng hon ton nh vy. V c th cc lp ny c xy dng thnh cc th vin chun v cung cp cho cc nhm pht trin khc.. .Do vy vic tun th theo cc qui tc l rt cn thit.

    e khai bo mt phng thc, phi xc nh kiu gi tr tr v, tn ca phng thc, vcui cng l cc tham s cn thit cho phng thc thc hin.

    Ch thchMt chng trnh c vit tt th cn phi c ch thch cc on m c vit. Cc on

    ch thch ny s khng c bin dch v cng khng tham gia vo chng trnh. Mc ch chnh l lm cho on m ngun r rng v d hiu.Trong v d 2.1 c mt dng ch thch :// Xuat ra man hinh.

    Mt chui ch thch trn mt dng th bt u bng k t Khi trnh bin dch gp hai k t ny th s b qua dng .Ngoi ra c# cn cho php kiu ch thch cho mt hay nhiu dng, v ta phi khai bo /* phn u ch thch v kt thc ch thch l k t

    V d 2.2 : Minh ha dng ch thch trn nhiu dng.

    class ChaoMung

    {

    static void Main()

    {/* Xuat ra man hinh chuoi 'chao mung'

    Su dung ham WriteUne cua lop System.Consol

    */System.Consol.WriteLine("Chao Mung");

    >>

    Ket qu:Chao Mung

    Ngoi hai kiu ch thch trn ging trong C/C++ th C# cn h tr thm kiu th ba cng l kiu cui cng, kiu ny cha cc nh dng XML nhm xut ra tp tin XML khi bin dch to su liu cho m ngun. Chng ta s bn kiu ny trong cc chng trnh cc phn tip.

    Ngn Ng C#25

  • Ngn Ng Lp Trnh C#

    ng dng ConsoleV d n gin trn c gi l ng dng console, ng dng ny giao tip vi ngi dng

    thng quan bn phm v khng c giao din ngi dng (UI), ging nh cc ng dng thng thy trong Windows. Trong cc chng xy dng cc ng dng nng cao trn Windows hay Web th ta mi dng cc cc giao din ha. Cn tm hiu v ngn ng C# thun tu th cch tt nht l ta vit cc ng dng console.

    Trong hai ng dng n gin trn ta dng phng thc WrteLne() ca lp Console. Phng thc ny s xut ra mn hnh dng lnh hay mn hnh DOS chui tham s a vo, c th l chui chao Mung.

    NamespaceNh chng ta bit .NET cung cp mt th vin cc lp s v th vin ny c tn l

    FCL (Framework Class Library). Trong Console ch l mt lp nh trong hng ngn lp trong th vin. Mi lp c mt tn ring, v vy FCL c hng ngn tn nh ArrayList, Dictionary, FMeSelector,...

    iu ny lm ny sinh vn , ngi lp trnh khng th no nh ht c tn ca cc lp trong .NET Framework. T hn na l sau ny c th ta to li mt lp trng vi lp c chng hn. V d trong qu trnh pht trin mt ng dng ta cn xy dng mt lp t in v ly tn l Dictionary, v iu ny dn n s tranh chp khi bin dch v C# ch cho php mt tn duy nht.

    Chc chn rng khi chng ta phi i tn ca lp t in m ta va to thnh mt ci tn khc chng hn nh my Dictionary. Khi s lm cho vic pht trin cc ng dng tro nn phc tp, cng knh. en mt s pht trin nht nh no th chnh l cn c mng cho nh pht trin.

    Gii php gii quyt vn ny l vic to ra mt namespace, namsespace s hn ch phm vi ca mt tn, lm cho tn ny chi c ngha trong vng nh ngha.Gi s c mt ngi ni Tng l mt k s, t k s phi i km vi mt lnh vc nht nh no , v nu khng th chng ta s khng bit c l anh ta l k s cu ng, c kh hay phn mm. Khi mt lp trnh vin C# s bo rng Tng l CauDuong.KySu phn bit vi CoKhi.KySu hay PhanMem.KySu. Namespace trong trng hp ny l CauDuong, CoKhi, PhanMem s hn ch phm vi ca nhng t theo sau. N to ra mt vng khng gian tn sau c ngha.

    Tng t nh vy ta c to cc namespace phn thnh cc vng cho cc lp trng tn khng tranh chp vi nhau.

    Tng t nh vy, .NET Framework c xy dng mt lp Dictionary bn trong namespace System.Collections, v tng ng ta c th to mt lp Dictionary khc nm trong namespace ProgramCSharp.DataStructures, iu ny hon ton khng dn n s tranh chp vi nhau.

    26Ngn Ng C#

  • Ngn Ng Lp Trnh C#

    Trong v d minh ha 1.2 i tng Console b hn ch bi namespace bng vic s dng m lnh:

    System. Console. WriteUneO;

    Ton t

    Trong vd 2.2 trn du V c s dng truy cp n phng thc hay d liu trong mt lp (trong trng hp ny phng thc l WriteLineO), v ngn cch gia tn lp n mt namespace xc nhn (namspace System v lp l Console). Vic thc hin ny theo hng t trn xung, trong mc u tin namespace l System, tip theo l lp Console, v cui cng l truy cp n cc phng thc hay thuc tnh ca lp.

    Trong nhiu trng hp namespace c th c chia thnh cc namespace con gi l subnamespace. V d trong namespace System c cha mt s cc subnamesapce nhu Configuration, Collections, Data, v cn rt nhiu na, hn na trong namespace Collection cn chia thnh nhiu namesapce con na.

    Namespace gip chng ta t chc v ngn cch nhng kiu. Khi chng ta vit mt chng trnh C# phc tp, chng ta c th phi to mt kin trc namespace ring cho mnh, v khng gii hn chiu su ca cy phn cp namespace. Mc ch ca namespace l gip chng ta chia qun l nhng kin trc i tng phc tp.

    T kha usinge lm cho chng trnh gn hn, v khng cn phi vit tng namespace cho tng i

    tng, C# cung cp t kha l using, sau t kha ny l mt namespace hay subnamespace vi m t y trong cu trc phn cp ca n.Ta c th dng dng lnh :

    using System;

    u chng trnh v khi trong chng trnh nu chng ta c dng i tng Console th khng cn phi vit y : System.Console, m ch cn vit Console, thi.

    V d 2.3: Dng kha using

    using System;

    class ChaoMung

    {static void Main()

    {//Xuat ra man hinh chuoi thong bao

    Console.WriteLine("Chao Mung");

    >>

    Ngn Ng C#27

  • Ngn Ng Lp Trnh C#

    Kt qu:Chao Mung

    Lu rng phi t cu using System trc nh ngha lp ChaoMung.Mc d chng ta ch nh rng chng ta s dng namespace System, v khng ging nh cc ngn ng khc, khng th ch nh rng chng ta s dng i tng System.Console.

    V d 2.4: Khng hp l trong c#.

    using System.Console;

    class ChaoMung

    static void MainQ

    //Xuat ra man hinh chuoi thong bao

    WriteLine("Chao Mung");

    >>

    on chng trnh trn khi bin dch s c thng bo mt li nh sau: error CS0138: A using namespace directive can only be applied to namespace;

    'System.Console' is a class not a namespace.

    Cch biu din namespace c th lm gim nhiu thao tc g bn phm, nhng n c th s khng em li li ch no bi v n c th lm xo trn nhng namespace c tn khng khc nhau. Gii php chung l chng ta s dng t kha using vi cc namespace c xy dng sn, cc namespace do chng ta to ra, nhng namespace ny chng ta nm chc su liu v n. Cn i vi namespace o cc hng th ba cung cp th chng ta khng nn dng t kha using.

    Phn bit ch thng v ch hoaCng ging nh C/C++, C# l ngn ng phn bit ch thng vi ch hoa, iu ny c

    ngha rng hai cu lnh writeLine th khc vi WriteUne v cng khc vi Vi/RITELINE.ng tic l C# khng giong nh VB, mi trng pht trin C# s khng t sa cc li ny, nu chng ta vit hai ch vi cch khc nhau th chng ta c th a vo chng trnh g ri tm ra cc li ny.

    c trch vic lnh ph thi gian v cng sc, ngi ta pht trin mt s qui c cho cch t tn bin, hng, hm, v nhiu nh danh khc na. Qui c trong gio trnh ny dng c php lc (camel notation) cho tn bin v c php Pascal cho hm, hng, v thuc tnh.V d :

    28Ngn Ng C#

  • Ngn Ng Lp Trnh C#

    Bin myDictionary theo cch t tn c php lc .Hm DravvLine, thuc tnh ColorBackground theo cch t tn c php Pascal.

    T kha staticHm Main() trong v d minh ha trcn c nhiu hn mt cch thit k. Trong minh ha ny hm MainQ c khai bo vi kiu tra v l void, tc l hm ny khng tr v bt c gi tr no c. i khi cn kim tra chng trnh c thc hin ng hay khng, ngi lp trnh c th khai bo hm Main() tr v mt gi tr no xc nh kt qu thc hin ca chng trnh. Trong khai bo ca v d trn c dng t kha static:

    static void Main()

    {

    >T kha ny ch ra rng hm Main() c th c gi m khng cn phi to i tng ChaoMung. Nhng vn lin quan n khai bo lp, phng thc, hay thuc tnh s c trnh by chi tit trong cc chng tip theo.

    Pht trin chng trnh minh haC ti thiu l hai cch son tho, bin dch v thc thi chng trnh trong cun sch ny:

    S dng mi trng pht trin tch hp (IDE) Visual Studio .NET S dng chng trnh son tho vn bn bt k nh Notepad ri dng bin dch dng lnh.

    Mc d chng ta c th pht trin phn mm bn ngoi Visual Studio .NET, IDE cung cap nhiu cc tin ch h tr cho ngi pht trin nh: h tr phn son tho m ngun nh canh l, mu sc, tch hp cc tp tin tr gip, cc c tnh intellisense,...Nhng iu quan trng nht l IDE phi c cng c debug mnh v mt s cng c tr gip pht trin ng dng khc.

    Trong cun sch ny gi s rng ngi c ang s dng Visual Studio .NET. Phn trnh ny s tp trung vo ngn ng v platform hn l cng c pht trin. Chng ta c th sao chp tt c nhng m ngun v d vo trong mt chng trnh son tho vn bn nh Notepad hay Emacs, lu chng di dng tp tin vn bn, v bin dch chng bng trnh bin dch dng lnh c#, chng trnh ny c phn phi cng .NET Framework SDK. Trong nhng chng cui v xy dng cc ng dng trn Windows v Web, chng ta s s ng cng c Visual Studio .NET to ra cc Windows Form v Web Form, tuy nhin chng ta cng c th vit bng tay trong Notepad nu chng ta quyt nh s dng cch lm bng tay thay v dng cng c thit k.

    S dng Notepad son tho

    Ngn Ng C#29

  • Ngn Ng Lp Trnh C#

    u tin chng ta s m chng trinh Notepad ri son tho chng trnh minh ha trn, lu l ta c th s dng bt c trnh son tho vn bn no ch khng nht thit l Notepad. Sau khi son tho xong th lu tp tin xung a v tp tin ny c phn m rng l *.cs, trong v d ny l chaomung.cs. Bc tip theo l bin dch tp tin ngun va to ra. bin dch ta dng trnh bin dch dng lnh C# (csc.exe) chng trnh ny c chp vo my trong qu trnh ci .NET Framework. bit csc.exe nm chnh xc v tr no trong a ta c th dng chc nng tm kim ca Windows.e thc hin bin dch chng ta m mt ca s dng lnh ri nh vo lnh theo mu sau:

    csc.exe [/out: ]

    V d: csc.exe /out:d:\chaomung.exe d:\chaomung.cs

    Thng th khi bin dch ta ch cn hai phn l tn ca trnh bin dch v tn tp tin ngun m thi. Trong mu trn c dng mt trong nhiu ty chn khi bin dch l /out, theo sau l tn ca chng trnh thc thi hay chnh l kt qu bin dch tp tin ngun.Cc tham s ty chn c rt nhiu nu mun tm hiu chng ta c th dng lnh:

    csc.exe /?

    Lnh ny xut ra mn hnh ton b cc ty chn bin dch v cc hng dn s dng.Hai hnh sau minh ha qu trnh nhp m ngun chng trnh C# bng mt trnh son tho vn bn n gin nh Notepad trong Windows. V sau bin dch tp tin m ngun va to ra bng chng trnh csc.exe mt trnh bin dch dng lnh ca c#. Kt qu l mt tp tin thc thi c to ra v ta s chy chng trnh ny.

    Hnh 2.2: M ngun c son tho trong Notepad.

    Ngn Ng C#30

  • Ngn Ng Lp Trnh C#

    C:\WINDOWS\System32\cmd.exe HED:\>c :\windous\microsof t .NET\f rameuorkSvl -0.3705\csc - exe /out:d:\cm.exe d:\chaoniung.csMicrosoft Uisual C# .NET Compiler version 7.00.9466for Microsoft .NET Framework version 1.0.3705Copyright Microsoft Corporation 2001. All rights reserved.

    D:\>cm.exe Chao MungD:\>b

    21

    d Jj

    Hnh 2.3: Bin dch v thc thi chng trnh.

    S dng Visual Studio .NET to chng trnh to chng trnh cho mng trong IDE, la chn mc Visual Studio .NET trong menu

    Start hoc icon ca n trn desktop, sau khi khi ng xong chng trnh, chn tip chc nng File New Project trong menu. Chc nng ny s gi ca so New Project (hnh 2.4 bn di). Neu nh chng trnh Visual Studio .NET c chy ln u tin, khi ca s New Project s xut hin t ng m khng cn phi kch hot. to ng dng, ta la chn mc Visual c# Projects trong ca s Project Type bn tri. Lc ny chng ta c th nhp tn cho ng dng v la chn th mc ni lu tr cc tp tin ny. Cui cng, kch vo OK khi mi chuyn khi to chm dt v mt ca s mi s xut hin (hnh 2.4 bn di), chng ta c th nhp m ngun vo y.Lu rang Visual Studio .NET to ra mt namespace da trn tn ca project m ta va cung cp (ChaoMung), v thm vo ch dn s dng namespace System bng lnh using, bi hu nh mi chng trnh m chng ta vit u cn s dng cc kiu d liu cha trong namespace System.

    Ngn Ng C#31

  • Ngn Ng Lp Trnh c#

    Hnh 2.4: To ng dng c# console trong Visual Studio .NET.

    Hnh 2.5: Phn son tho m ngun cho prect.

    Visual Studio .NET to mt lp tn l Classl, lp ny chng ta c th ty i tn ca chng. Khi i tn ca lp, tt nht l i tn lun tp tin cha lp (Classl.cs). Gi s

    32Ngn Ng c#

  • Ngn Ng Lp Trnh C#

    trong v d trn chng ta i tn ca lp thnh ChaoMung, v i tn tp tin Classl.cs (i tn tp tin trong ca so Solution Explorer).Cui cng, Visual Studio .NET to mt khung sn chng trnh, v kt thc vi ch thch TODO l v bt u ca chng ta. to chng trnh cho mng trong minh ha trn, ta b tham so string[] args ca hm Main() v xa tt c cc ch thch bn trong ca hm. Sau nhp vo dng lnh sau bn trong thn ca hm Main()

    // Xuat ra man hinh

    System.Console.WriteUne("Chao Mung");

    Sau tt c cng vic , tip theo l phn bin dch chng trnh t Visual Studio .NET. Thng thng thc hin mt cng vic no ta c th chn kch hot chc nng trong menu, hay cc button trn thanh toolbar, v cch nhanh nht l s dng cc phm nng hay cc phm kt hp gi nhanh mt chc nng.Trong v d, bin dch chng trnh nhn Ctrl-Shift-B hoc chn chc nng:Build Build Solution. Mt cch khc na l dng nt lnh trn thanh toolbar: chy chng trnh va c to ra m khng s dng ch debug chng ta c th nhn Ctrl-F5 hay chn Debug start Without Debugging hoc nt lnh V trn thanh toolbar ca Visual Studio . NET

    Ghi ch. Tt hn ht l chng ta nn b ra nhiu thi gian tm hiu hay khm ph mi trng pht trin Visual Studio .NET. y cng l cch thc tt m nhng ngi pht trin ng dng v chng ta nn thc hin. Vic tm hiu Visual Studio .NET v thng tho n s gip cho chng ta rt nhiu trong qu trinh xy dng v pht trin ng dng sau ny. C uhi v tr liCu hi 1: Mt chng trnh C# c th chy trn bt c my no?Tr li 1: Khng phi tt c. Mt chng trnh C# ch chy trn my c Common Language Runtime (CLR) c ci t. Neu chng ta copy mt chng trnh exe ca C# qua mt my khng c CLR th chng ta s nhn c mt loi. Trong nhng phin bn ca Windows khng c CLR chng ta s c bo rng thiu tp tin DLL.Cu hi 2: Neu mun a chng trnh m ta vit cho mt ngi bn th tp tin no m chng ta cn a?Tr li 2: Thng thng cch tot nht l a chng trnh bin dch. iu ny c ngha rng sau khi m ngun c bin dch, chng ta s c mt chng trnh thc thi (tp tin c phn m rng *.exe ). Nh vy, nu chng ta mun a chng trnh Chaomung cho tt c nhng ngi bn ca chng ta th ch cn a tp tin Chaomung.exe. Khng cn thit phi a tp tin ngun Chaomung.cs. V nhng ngi bn ca chng ta khng cn thit phi c trnh bin dch c#. H chi cn c c# runtime trn my tnh (nh CLR ca Microsoft) l c th chy c chng trnh ca chng ta.Cu hi 3: Sau khi to ra c tp tin thc thi .exe. C cn thit gi li tp tin ngun khng?

    Ngn Ng C#33

  • Ngn Ng Lp Trnh C#

    Tr li 3: Nu chng ta t b tp tin m ngun th sau nci)> s rt kh khn cho vic m rng hay thay oi chng trnh, do cn thit phi gi li cc tp tin ngun. Hu ht cc IDE to ra cc cc tp tin ngun .cs) v cc tp tin thc thi. Cng nh gi cc tp tin ngun chng ta cng cn thit phi gi cc tp tin khc nh l cc ti nguyn bn ngoi cc icon, image, form.. Chng ta s lu gi nhng tp tin ny trong trng hp chng ta cn thay i hay to li tp tin thc thi.Cu hi 4\ Neu trnh bin dch C# a ra mt trnh son tho, c phi nht thit phi s dng n?Tr li 4: Khng hon ton nh vy. Chng ta c th s dng bt c trnh son tho vn bn no v lu m ngun di dng tp tin vn bn. Nu trnh bin dch a ra mt trnh son tho th chng ta nn s dng n. Nu chng ta c mt trnh son tho khc tt hn chng ta c th s dng n. Mt s cc tin ch son tho m ngun c th gip cho ta d dng tm cc loi c php, gip to mt s m ngun t ng n gin...Ni chung l ty theo chng ta nhng theo ti th Visual Studio .NET cng kh tt s dng Cu hi 5: C th khng quan tm n nhng cnh bo khi bin dch m ngun Tr li 5: Mt vi cnh bo khng nh hng n chng trnh khi chy, nhng mt s khc c th nh hng n chng trnh chy. Nu trnh bin dch a ra cnh bo, tc l tin hiu cho mt th g khng ng. Hu ht cc trnh bin dch cho php chng ta thit lp mc cnh bo. Bng cch thit lp mc cnh bo chng ta c th ch quan tm n nhng cnh bo nguy him, hay nhn ht tt c nhng cnh bo. Ni chung cch tt nht l chng ta nn xem tt c nhng cnh bo sa cha chng, mt chng trnh tm gi l t yu cu khi khng c li bin dch v cng khng c cnh bo (nhng cha chc chy ng kt qu!).

    Cu hi thmCu hi 1: Hy a ra 3 l do ti sao ngn ng C# l mt ngn ng lp trnh tt?Cu hi 2: IL v CLR vit tt cho t no v ngha ca n?Cu hi 3: a ra cc bc c bn trong chu trnh xy dng chng trnh?Cu hi 4: Trong bin dch dng lnh th lnh no c s dng bin dch m ngun .cs v lnh ny gi chng trnh no?Cu hi 5: Phn m rng no m chng ta nn s dng cho tp tin m ngun c#?Cu hi 6: Mt tp tin .txt cha m ngun cu c phi l mi tp tin m ngun cu hp l hay khng? C th bin dch c hay khng?Cu hi 7: Ngn ng my l g? Khi bin dch m ngun C# ra tp tin .exe th tp tin ny l ngn ng g?Cu hi 8: Nu thc thi mt chng trnh bin dch v n khng thc hin ng nh mong i ca chng ta, th iu g chng ta cn phi lm?Cu hi 9: Mt li tng t nh bn di thng xut hin khi no?

    Ngn Ng C#34

  • Ngn Ng Lp Trnh C#

    mvcode.cs(15,5): error CS1010: NewLine in constan Cu hi 10: Ti sao phi khai bo static cho hm Main ca lp?Cu hi 11: Mt m ngun C# c phi cha trong cc lp hay l c th tn ti bn ngoi lpnh C/C++?Cu hi 12: So snh s khc nhau c bn gia C# v C/C++, C# vi Java, hay bat c ngn ng cp cao no m bn bit?Cu hi 13: Con tr c cn c s dng trong C# hay khng? Nu c th n c qun lnh th no?Cu hi 14: Khi nim v ngha ca namespace trong c #? iu g xy ra nu nh ngn ng lp trnh khng ho tr namespace?

    Bi tpBi tp h Dng trnh son tho vn bn m chng trnh exe m ta bin dch t cc chng trnh ngun trc v xem s khc nhau gia hai tp tin ny, lu V sao khi ng tp tin ny ta khng chn lu tp tin.Bi tp 2: Nhp vo chng trnh sau v bin dch n. Cho bit chng trnh thc hin iu

    g?

    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.WriteUne("Ban kinh = {0}, PI = {1}", radius, PI);

    Console.WriteUne("Dien tich {0}", area);

    Console.WriteUne("Chu Vi {0}", circum);

    Bi ty 3: Nhp vo chng trnh sau v bin dch. Cho bit chng trnh thc hin iu g?

    class ACIass

    Ngn Ng C#35

  • Ngn Ng Lp Trnh C#

    static void Main()

    {int x, y;

    for( x = 0; x < 10; x++, System.Console.Write("\n"));

    for( y = 0 ; y < 10; y++, System.Console.Writel_ine("{0}",y));

    >>

    Bi tp 4: Chng trnh sau c cha li. Nhp vo v sa nhng li

    Bi ty 5: Sa li v bin dch chng trnh sau

    class Test

    {pubic static void Main()

    {

    Console.WriteLine("Xin chao"); Consoile.WriteLine("Tam biet");

    >>

    Bi ty 6: Sa li v bin dch chng trnh sau

    class Test

    {pubic void MainO

    {Console.WriteLine('Xin chao'); Consoile.WriteUne('Tam biet');

    >>

    Bi tp 7: Vit chng trnh xut ra bi th:

    Ngn Ng C#36

  • Ngn Ng Lp Trnh c#

    Rm Thng Ging

    Rm xun lng lng trng soi,

    Sng xun nc ln mu tri thm xun.

    Gia dng bn bc vic qun

    Khuya v bt ngt trng ngn y thuyn.

    H Ch Minh.

    Ngn Ng c#37

  • Ngn Ng Lp Trnh C#

    Chng 3

    NN TNG NGN NG C#

    Kiu d liu

    Kiu d liu xy dng sn

    Chn kiu d liu

    Chuyn i cc kiu d liu

    Bin v hng

    Gn gi tr xc nh cho bin

    Hng

    Kiu lit k

    Kiu chui k t

    nh danh

    Biu thc

    Khong trng

    Cu lnh

    Phn nhnh khng c iu kin

    Phn nhnh c iu kin

    Cu lnh lp

    Ton t

    Namespace

    Cc ch dn hin dch

    Cu hi & bi tp

    Nn Tng Ngn Ng C#38

  • Ngn Ng Lp Trnh C#

    Trong chng trc chng ta tm hiu mt chng trnh C# n gin nht. Chng trnh cha din t mt chng trnh vit bng ngn ng c#, c qu nhiu phn v chi tit b qua. Do vy trong chng ny chng ta s i su vo tm hiu cu trc v c php ca ngn ng c#.

    Chng ny s tho lun v h thng kiu d liu, phn bit gia kiu d liu xy dng sn (nh int, bool, string...) vi kiu d liu do ngi dng nh ngha (lp hay cu trc do ngi lp trnh to ra...). Mt s c bn khc v lp trnh nh to v s dng bin d liu hay hng cng c cp cng vi cu trc lit k, chui, nh danh, biu thc v cu lnh.

    Trong phn hai ca chng hng dn v minh ha vic s dng lnh phn nhnh if, switch, while, do...while, for, v foreach. V cc ton t nh php gn, php ton logic, php ton quan h, v ton hc...

    Nh chng ta bit C# l mt ngn ng hng i tng rt mnh, v cng vic ca ngi lp trinh l k tha to v khai thc cc i tng. Do vy nm vng v pht trin tt ngi lp trnh cn phi i t nhng bc i du tin tc l i vo tm hiu nhng phn c bn v ct li nht ca ngn ng.

    Kiu d liu

    C# l ngn ng lp trnh mnh v kiu d liu, mt ngn ng mnh v kiu d liu l phi khai bo kiu ca mi i tng khi to (kiu s nguyn, s thc, kiu chui, kiu iu khin...) v trnh bin dch s gip cho ngi lp trnh khng b li khi ch cho php mt loi kiu d liu c th c gn cho cc kiu d liu khc. Kiu d liu ca mt i tng l mt tn hiu trnh bin dch nhn bit kch thc ca mt i tng (kiu int c kch thc l 4 byte) v kh nng ca n (nh mt i tng button c th v, phn ng khi nhn,...).

    Tng t nh C++ hay Java, C# chia thnh hai tp hp kiu d liu chnh: Kiu xy dng sn (built- in) m ngn ng cung cp cho ngi lp trnh v kiu c ngi dng nh ngha (user-defined) do ngi lp trnh to ra.

    C# phn tp hp kiu d liu ny thnh hai loi: Kiu d liu gi tr (value) v kiu d liu tham chiu (reference). Vic phn chi ny do s khc nhau khi lu kiu d liu gi tr v kiu d liu tham chiu trong b nh. i vi mt kiu d liu gi tr th s c lu gi kch thc tht trong b nh cp pht l stack. Trong khi th a ch ca kiu d liu tham chiu th c lu trong stack nhng oi tng tht s th lu trong b nh heap.

    Neu chng ta c mt i tng c kch thc rt ln th vic lun gi chng trn b nh heap rt c ch, trong chng 4 s trnh by nhng li ch v bt li khi lm vic vi kiu d liu tham chiu, cn trong chng ny ch tp trung kiu d kiu c bn hay kiu xy dng

    Ghi ch: Tt c cc kiu d liu xy dng sn l kiu d liu gi tr ngoi tr cc i tng v chui. V tt c cc kiu do ngi dng nh ngha ngoi tr kiu cu trc u l kiu d liu tham chiu.

    Nn Tng Ngn Ng C#39

  • Ngn Ng Lp Trnh C#

    Ngoi ra C# cng h tr mt kiu con tr C++, nhng him khi c s dng, v ch khi no lm vic vi nhng on m lnh khng c qun l (unmanaged code). M lnh khng c qun l l cc lnh c vit bn ngoi nn .MS.NET, nh l cc i tng COM.

    Kiu d liu xy dng snNgn ng C# a ra cc kiu d liu xy dng sn rt hu dng, ph hp vi mt ngn

    ng lp trnh hin i, mi kiu d liu c nh x n mt kiu d liu c h tr bi h thng xc nhn ngn ng chung (Common Language Specification: CLS) trong MS.NET. Vic nh x cc kiu d liu nguyn thu ca C# n cc kiu d liu ca .NET s m bo cc i tng c to ra trong C# c th c s dng ng thi vi cc i tng c to bi bt c ngn ng khc c bin dch bi .NET, nh VB.NET.

    Mi kiu d liu c mt s xc nhn v kch thc khng thay i, khng ging nhu C++, int trong C# lun c kch thc l 4 byte bi v n c nh x t kiu Int32 trong . NET.Bng 3.1 sau s m t mt s cc kiu d liu c xy dng sn

    Kiu C# S byte Kiu .NET M tabyte 1 Byte So nguyn dng khng du t 0-255char 2 Char K t Unicodebool 1 Boolean Gi tr logic true/ falsesbyte 1 Sbyte S nguyn c du ( t -128 n 127)short 2 Intl6 S nguyn c du gi tr t -32768 n

    32767.ushort 2 Uintl6 S nguyn khng u 0 - 65.535int 4 Int32 S nguyn c du -2.147.483.647 v

    2.147.483.647uint 4 Uint32 S nguyn khng du 0 - 4.294.967.295float 4 Single Kiu du chm ng, gi tr xp x t 3,4E-

    38 n 3,4E+38, vi 7 ch s c ngha..double 8 Double Kiu du chm ng c chnh xc gp

    i, gi tr xp xi t l,7E-308 n l,7E+308, vi 15,16 ch s c ngha.

    decimal 8 Decimal C chnh xc n 28 con s v gi tr thp phn, c dng trong tnh ton ti chnh, kiu ny i hi phi c hu t m hay M" theo sau gi tr.

    Nn Tng Ngn Ng C#40

  • Ngn Ng Lp Trnh c#

    long 8 Int64 Kiu s nguyn c du c gi tr trongkhong:-9.223.370.036.854.775.808 n9.223.372.036.854.775.807

    ulong 8 Uint64 S nguyn khng u t 0 nOxffffffffffffffff

    Bng 3.1 : M t cc kiu d liu xy dng sn.

    Ghi ch: Kiu gi tr logic ch c th nhn c gi tr l true hay false m thi. Mt gi tr nguyn khng th gn vo mt bin kiu logic trong C# v khng c bt c chuyn i ngrn nh no. iu ny khc vi C/C++, cho php bin logic c gn gi tr nguyn, khi gi tr nguyn 0 l false v cc gi tr cn li l true.

    Chn kiu d liuThng thng chn mt kiu d liu nguyn s dng nh short, int hay long

    thng da vo ln ca gi tr mun s dng. V d, mt bin ushort c th lu gi gi tri t 0 n 65.535, trong khi bin ulong c th lu gi gi tr t 0 n 4.294.967.295, do ty vo min gi tr ca phm vi s dng bin m chn cc kiu liu thch hp nht. Kiu d liu int thng c s dng nhiu nht trong lp trnh v vi kch thc 4 byte ca n cng lu cc gi tr nguyn cn thit.Kiu s nguyn c du thng c la chn s dng nhiu nht trong kiu s tr khi c l do chnh ng s dng kiu d liu khng du.

    Stack v Heap

    Nn Tng Ngn Ng c#41

  • Ngn Ng Lp Trnh C#

    Stack l mt cu trc d liu lu tr thng tin dng xp chng tc l vo sau ra trc (Last In First Out : LIFO), iu ny ging nh chng ta c mt chng cc a, ta c xp cc a vo chng v khi ly ra th a no nm trn cng s c lp ra trc, tc l a vo sau s c ly ra trc.Trong c#, kiu gi tr nh kiu s nguyn c cp pht trn stack, y l vng nh c thit lp lu cc gi tr, v vng nh ny c tham chiu bi tn ca bin.Kiu tham chiu nh cc i tng th c cp pht trn heap. Khi mt i tng c cp pht trn heap th a ch ca n c tr v, v a ch ny c gn n mt tham chiu.Thnh thong c ch thu gom s hy i tng trong stack sau khi mt vng trong stack c nh du l kt thc. Thng thng mt vng trong stack c nh ngha bi mt hm. Do , nu chng ta khai bo mt bin cc b trong mt hm l mt i tng th i tng ny s nh du hy khi kt thc hm.Nhng i tng trn heap s c thu gom sau khi mt tham chiu cui cng n i tng c gi.

    Cch tt nht khi s dng bin khng du l gi tr ca bin lun lun dng, bin ny thng th hin mt thuc tnh no c min gi tr dng. V d khi cn khai bo mt bin lu gi tui ca mt ngi th ta dng kiu byte (s nguyn t 0-255) v tui ca ngi khng th no m c.Kiu float, double, v decimal a ra nhiu mc khc nhau v kch thc cng nh chnh xc.Vi thao tc trn cc phn s nh th kiu float l thch hp nht. Tuy nhin lu rng trnh bin dch lun lun hiu bt c mt s thc no cng l mt s kiu double tr khi

    chng ta khai bo r rng. gn mt s kiu float th s phi c k t f theo sau. float soFloat = 24f;

    Kiu d liu k t th hin cc k t Unicode, bao gm cc k t on gin, k t theo m Unicode v cc k t thot khc c bao trong nhng du nhy n. V d, A l mt k ti n gin trong khi \u0041 l mt k t Unicode. K t thot l nhng k t c bit bao gm hai k t lin tip trong k t du tin l du cho V. V d, \t l du tab. Bng 3.2 trnh by cc k t c bit.

    K t ngha

    V Du nhy on\" Du nhy kp\\ Du cho\0 K t null\a Alert

    42Nn Tng Ngn Ng C#

  • Ngn Ng Lp Trnh C#

    \b Backspace\f Sang trang form feed\n Dng mi\r u dng\t Tab ngang\v Tab dc

    Bng 3.2 : Cc kiu k t c bit.

    Chuyn i cc kiu d liuNhng i tng ca mt kiu d liu ny c th c chuyn sang nhng i tng ca

    mt kiu d liu khc thng qua c ch chuyn i tng minh hay ngm nh. Chuyn i nhm nh c thc hin mt cch t ng, trnh bin dch s thc hin cng vic ny. Cn chuyn i tng minh din ra khi chng ta gn p mt gi tr cho kiu d liu khc.

    Vic chuyn i gi tr ngm nh c thc hin mt cch t ng v m bo l khng mt thng tin. V d, chng ta c th gn ngm nh mt s kiu short (2 byte) vo mt s kiu int (4 byte) mt cch ngm nh. Sau khi gn hon ton khng mt d liu v bt c gi tr no ca short cng thuc v int:

    short X = 10;

    int y = x; / / chuyn i ngm nh Tuy nhin, nu chng ta thc hin chuyn i ngc li, chc chn chng ta s b mt thng tin. Neu gi tr ca s nguyn ln hn 32.767 th n s b ct khi chuyn i. Trnh bin dch s khng thc hin vic chuyn i ngm nh t s kiu int sang s kiu short:

    short x; int y = 100;

    X = y; // Khng bin dch, li !!!

    khng b li chng ta phi dng lnh gn tng minh, on m trn c vit li nh sau: short x; int y = 500;X = (short) y; // p kiu tng minh, trnh bin dch khng bo li

    Bin v hngMt bin l mt vng lu tr vi mt kiu d liu. Trong v d trc c X, v y iu l

    bin. Bin c th c gn gi tr v cng c th thay i gi tr khi thc hin cc lnh trong chng trnh. to mt bin chng ta phi khai bo kiu ca bin v gn cho bin mt tn duy nht. Bin c th c khi to gi tr ngay khi c khai bo, hay n cng c th c gn mt gi tri mi vo bt c lc no trong chng tnh. V d 3.1 sau minh ha s dng bin.

    V d 3.1: Khi to v gn gi tr n mt bin.

    Nn Tng Ngn Ng C#43

  • Ngn Ng Lp Trnh c#

    class MinhHoaC3

    {static void Main()

    {int bienl = 9;

    System.Console.WriteLine("Sau khi khoi tao: bienl ={0>", bienl);

    bienl = 15;

    System.Console.WriteUne("Sau khi gan: bienl ={0>", bienl);

    >

    Kt qu:Sau khi khoi tao: bienl = 9 Sau khi gan: bienl = 15

    Ngay khi khai bo bin ta gn gi tr l 9 cho bin, khi xut bin ny th bin c gi tr l 9.Thc hin php gn bin cho gi tri mi l 15 th bin s c gi tr l 15 v xut kt qu l 15.Gn gi tr xc nh cho bin

    C# i hi cc bin phi c khi to trc khi c s dng. kim tra lut ny chng ta thay i dng lnh khi to bin bienl trong v d 3.1 nh sau:

    int bienl;

    v gi nguyn phn cn li ta c v d 3.2:[5 V d 3.2: S dng mt bin khng khi to.

    class MinhHoaC3

    {

    static void Main()

    {int bienl;

    System.Console.WriteLine("Sau khi khoi tao: bien 1 ={0}", bienl);

    bienl = 15;

    System.Console.WriteUne("Sau khi gan: bienl ={0}", bienl);

    >

    Khi bin dch on chng trnh trn th trnh bin dch c# s thng bo mt li sau:...error CS0165: Use of unassigned local variable 'bienl'

    44Nn Tng Ngn Ng c#

  • Ngn Ng Lp Trnh c#

    Vic s dng bin khi cha c khi to l khng hp l trong c.#. V d 3.2 trn khng hp l.Tuy nhin khng nht thit lc no chng ta cng phi khi to bin. Nhng dng c th bt buc phi gn cho chng mt gi tr trc khi c mt lnh no tham chiu n bin . iu ny c gi l gn gi tr xc nh cho bin v c# bt buc phi thc hin iu ny.V d 3.3 minh ha mt chng trnh ng.

    V d 3.3: Bin khng c khi to nhng sau c gn gi tr.

    class MinhHoaC3

    {static void Main()

    {int bienl;

    bienl = 9;

    System.Console.WriteLine("Sau khi khoi tao: bienl ={0}", bienl);

    bienl = 15;

    System.Console.WnteUne("Sau khi gan: bienl ={0}", bienl);

    >>

    HngHng cng l mt bin nhng gi tr ca hng khng thay i. Bin l cng c rt mnh,

    tuy nhin khi lm vic vi mt gi tr c nh ngha l khng thay i, ta phi m bo gi tr ca n khng c thay i trong sut chng trnh. V d, khi lp mt chng trnh th nghim ha hc lin quan n nhit si, hay nhit ng ca nc, chng trnh cn khai bo hai bin l DoSoi v DoDong, nhng khng cho php gi tr ca hai bin ny b thay i hay b gn. ngn nga vic gn gi tr khc, ta phi s dng bin kiu hng.Hng c phn thnh ba loi: gi tr hng (literal), biu tng hng (symbolic constants), kiu liu k (enumerations).Gi tr hng: ta c mt cu lnh gn nh sau:

    X = 100;

    Gi tr 100 l gi tr hng. Gi tr ca 100 lun l 100. Ta khng th gn gi tr khc cho 100 c.Biu tng hng: gn mt tn cho mt gi tr hng, to mt biu tng hng dng t kha const v c php sau:

    = ;

    Nn Tng Ngn Ng c#45

  • Ngn Ng Lp Trnh c#

    Mt biu tng hng phi c khi to khi khai bo, v ch khi to duy nht mt ln trong sut chng trnh v khng c thay i. V d:

    const int DoSoi = 100;

    Trong khai bo trcn, 32 l mt hng s v DoSoi l mt biu tng hng c kiu nguyn. Vd 3.4 minh ha vic s dng nhng biu tng hng.

    Vi d 3.4: S dng biu tng hng.

    class MinhHoaC3

    static void Main()

    {const int DoSoi = 100; // c

    const int DoDong = 0; / / cSystem.Console.WriteLine( "Do dong cua nuoc {}", DoDong );

    System.Console.WriteLine( "Do soi cua nuoc {0}", DoSoi );

    >>

    Kt qu:Do dong cua nuoc 0 Do soi cua nuoc 100

    V d 3.4 to ra hai biu tng hng cha gi tr nguyn: DoSoi v DoDong, theo qui tc t tn hng th tn hng thng c t theo c php Pascal, nhng iu ny khng i hi bi ngn ng nn ta c th t ty .Vic dng biu thc hng ny s lm cho chng trnh c vit tng thm phn ngha cng vi s d hiu. Tht s chng ta c th dng hng s l 0 v 100 thay th cho hai biutng hng trn, nhng khi chng trnh khng c d hiu v khng c t nhin lm.Trinh bin dch khng bao gi chp nhn mt lnh gn gi tr mi cho mt biu tng hng. V d 3.4 trcn c th c vit li nh sau

    class MinhHoaC3

    {static void Main()

    {const int DoSoi = 100; // c

    const int DoDong = 0; / / c

    System.Console.WriteUne( "Do dong cua nuoc {}", DoDong );

    46Nn Tng Ngn Ng c#

  • Ngn Ng Lp Trnh C#

    System.Console.WriteLine( "Do soi cua nuoc {0}", DoSoi );DoSoi = 200;

    >>Khi trnh bin dch s pht sinh mt li sau:

    error CS0131: The left-hand side of an assignment must be a variable, property or indexer.

    Kiu lit kKiu lit k n gin l tp hp cc tn hng c gi tr khng thay i (thng c gi l

    danh sch lit k).Trong v d 3.4, c hai biu tng hng c quan h vi nhau:

    const int DoDong = 0;

    const int DoSoi = 100;

    Do mc ch m rng ta mong mun thm mt s hng s khc vo danh sch trn, nh cc hng sau:

    const int DoNong = 60;

    const int DoAm = 40;

    const int DoNguoi = 20;

    Cc biu tng hng trn iu c ngha quan h vi nhau, cng ni v nhit ca nc, khi khai bo tng hng trn c v cng knh v khng c lin kt cht ch cho lm. Thay vo C# cung cp kiu lit k gii quyt vn trn:

    enum NhietDoNuoc

    {DoDong = 0,DoNguoi = 20,DoAm = 40,DoNong = 60,DoSoi = 100,

    >Mi kiu lit k c mt kiu d liu c s, kiu d liu c th l bt c kiu d liu nguyn no nh int, short, long... tuy nhin kiu d lu ca lit k khng chp nhn kiu k t. khai bo mt kiu lit k ta thc hin theo c php sau:

    [thuc tnh] [b sung] enum [:kiu c s] {danh sch cc thnh phn

    lit k};

    Thnh phn thuc tnh v b sung l t chn s c trnh by trong phn sau ca sch. Trong phn ny chng ta s tp trung vo phn cn li ca khai bo. Mt kiu lit k bt u vi t kha enum, tip sau l mt nh danh cho kiu lit k:

    Nn Tng Ngn Ng C#47

  • Ngn Ng Lp Trnh C#

    enum NhietDoNuoc

    Thnh phn kiu c s chnh l kiu khai bo cho cc mc trong kiu lit k. Neu b qua thnh phn ny th trnh bin dch s gn gi tr mc nh l kiu nguyn int, tuy nhin chng ta c th s dng bt c kiu nguyn no nh ushort hay long,..ngoi tr kiu k t. on v d sau khai bo mt kiu lit k s dng kiu c s l s nguyn khng du uint:

    enum KichThuoc :uint

    {Nho = 1,Vua = 2,Lon = 3,

    >Lu l khai bo mt kiu lit k phi kt thc bng mt danh sch lit k, danh sch lit k n}' phi c cc hng c gn, v mi thnh phn phi phn cch nhau du phy.Ta vit li v d minh ha 3-4 nh sau.& V d 3.5: S dng kiu lit k n gin chng trnh.

    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.WnteUne( "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);

    >>

    Kt qu:

    Nn Tng Ngn Ng C#48

  • Ngn Ng Lp Trnh c#

    Nh fif. do (iong: 0

    Nhiet do nguoi: 2 0 Nhiet do am: 4 0 Nhiet do nong: 60 Nhiet do soi: 100

    Mi thnh phn trong kiu lit k tng ng vi mt gi tr s, trong trng hp ny l mt s nguyn. Neu chng ta khng khi to cho cc thnh phn ny th chng s nhn cc gi tr tip theo vi thnh phn u tin l 0.Ta xem th khai bo sau:

    enum Thutu

    {ThuNhat,ThuHai,ThuBa - 10,ThuTu

    >Khi gi tr ca ThuNhat l 0, gi tr ca ThuHai l 1, gi tr caThuBa l 10 v gi tr ca ThuTu l 11.

    Kiu lit k l mt kiu hnh thc do bt buc phi thc hin php chuyn i tng minh vi cc kiu gi tr nguyn:

    int X = (int) ThuTu.ThuNhat;

    Kiu chui k tKiu d liu chui kh thn thin vi ngi lp trnh trong bt c ngn ng lp trnh no,

    kiu d liu chui lu gi mt mng nhng k t. khai bo mt chui chng ta s dng t kho string tng t nh cch to mt th hin ca bt c i tng no:

    string chuoi;

    Mt hng chui c to bng cch t cc chui trong du nhy i:"Xn chao"

    y l cch chung khi to mt chui k t vi gi tr hng: string chuoi = "Xin chao"

    Kiu chui s c cp su trong chng 10.

    nh danhnh danh l tn m ngi lp trnh ch nh cho cc kiu d liu, cc phng thc, bin,

    hng, hay i tng.... Mt nh danh phi bt u vi mt k t ch ci hay du gch di, cc k t cn li phi l k t ch ci, ch s, du gch di.

    49Nn Tng Ngn Ng c#

  • Ngn Ng Lp Trnh C#

    Theo qui c t tn ca Microsoft th ngh s dng c php lc (camel notation) bt u bng k t thng t tn cho cc bin l c php Pascal (Pascal notation) vi k t u tin hoa cho cch t tn hm v hu ht cc nh danh cn li. Hu nh Microsoft khng cn dng c php Hungary nh iSoNguyen hay du gch di Bien Nguyen t cc nh danh.Cc nh danh khng c trng vi cc t kho m C# a ra, do chng ta khng th to cc bin c tn nh class hay int c. Ngoi ra, C# cng phn bit cc k t thng v k t hoa v vy C# xem hai bin bienNguyen v bienguyen l hon ton khc nhau.

    Biu thcNhng cu lnh m thc hin vic nh gi mt gi tr gi l biu thc. Mt php gn mt

    gi tr cho mt bin cng l mt biu thc: varl = 24;

    Trong cu lnh trn php nh gi hay nh lng chnh l php gn c gi tr l 24 cho bin varl. Lu l ton t gn (*=) khng phi l ton t so snh. Do vy khi s dng ton t ny th bin bn tri s nhn gi tr ca phn bn phi. Cc ton t ca ngn ng C# nh php so snh hay php gn s c trnh by chi tit trong mc ton t ca chng ny.Do varl = 24 l mt biu thc c nh gi tr l 24 nn biu thc ny c th c xem nh phn bn phi ca mt biu thc gn khc:

    var2 = varl = 24;Lnh ny s c thc hin t bn phi sang khi bin varl s nhn c gi tr l 24 v tip sau th var2 cng c nhn gi tr l 24. Do vy c hai bin u cng nhn mt gi tr l 24. C th dng lnh tren khi to nhiu bin c cng mt gi tr nh:

    a = b = c = d = 24;

    Khong trng (whitespace)Trong ngn ng c#,