Đồ án Tìm hiểu ngôn ngữ C# và viết một ứng dụng minh họa

TRƯỜNG ĐẠI HC KHOA HC TNHIÊN  
KHOA CÔNG NGHTHÔNG TIN  
BMÔN CÔNG NGHPHN MM  
PHM VĂN VIT - TRƯƠNG LP VĨ  
TÌM HIU NGÔN NGC# VÀ  
VIT MT NG DNG MINH HA  
ĐỒ ÁN TT NGIP  
GIÁO VIÊN HƯỚNG DN  
NGUYN TN TRN MINH KHANG  
TP. HCM 2002  
TRƯỜNG ĐẠI HC KHOA HC TNHIÊN  
KHOA CÔNG NGHTHÔNG TIN  
BMÔN CÔNG NGHPHN MM  
PHM VĂN VIT - TRƯƠNG LP VĨ  
TÌM HIU NGÔN NGC# VÀ VIT MT NG DNG MINH HA  
GIÁO VIÊN HƯỚNG DN  
NGUYN TN TRN MINH KHANG  
TP. HCM 2002  
Li cám ơn  
Để có thhoàn tt được bài đồ án này, trước tiên phi kể đến công sc ca thy  
Nguyn Tn Trn Minh Khang. Chúng em kính li cm ơn đến thy đã tn tình hướng  
dn và giúp đỡ trong thi gian thc hin đồ án này.  
Chúng em xin tlòng biết ơn sâu sc đối vi gia đình đã động viên, to điu kin để  
thc hin tt bài đồ án. Xin cám ơn cha, m, anh, ch, em!  
Chúng em cũng xin chân thành cm ơn đến các thy cô khoa Công nghthông tin  
trường Đại hc Khoa hc Tnhiên Thành phHChí Minh đã truyn đạt nhng kiến  
thc, kinh nghim quí báu cho chúng em trong quá trình hc tp ti trường.  
Chúng em cũng xin chân thành cm ơn đến các bn bè đã giúp đỡ tài liu, trao đổi hc  
thut mi có ththc hin đồ án này. Xin gi li cm ơn đến các bn HNgc Huy,  
Trn Thế Anh, Bùi Thanh Tun...  
Thành phHChí Minh, ngày 03 tháng 8 năm 2002  
Sinh viên  
Phm Văn Vit  
Trương Lp Vĩ  
Mc lc  
Li cám ơn.......................................................................................................................3  
Mc lc............................................................................................................................4  
Tóm tt.............................................................................................................................1  
Phn 1 Tìm hiu ngôn ngC#.........................................................................................1  
Chương 1 C# và .Net Framework................................................................................2  
1.1 Nn tng ca .NET.............................................................................................2  
1.2 .NET Framework ...............................................................................................3  
1.3 Biên dch và ngôn ngtrung gian (MSIL).........................................................4  
1.4 Ngôn ngC#......................................................................................................5  
Chương 2 Khi đầu......................................................................................................6  
2.1 Lp, đối tượng và kiu.......................................................................................6  
2.2 Phát trin “Hello World”....................................................................................8  
Chương 3 Nhng cơ sca ngôn ngC# .................................................................12  
3.1 Các kiu............................................................................................................12  
3.2 Biến và hng.....................................................................................................14  
3.3 Biu thc..........................................................................................................16  
3.4 Khong trng....................................................................................................16  
3.5 Câu lnh ...........................................................................................................16  
3.6 Toán t.............................................................................................................19  
3.7 To vùng tên.....................................................................................................21  
3.8 Chthtin xlý ..............................................................................................22  
Chương 4 Lp và đối tượng.......................................................................................24  
4.1 Định nghĩa lp..................................................................................................24  
4.2 To đối tượng...................................................................................................25  
4.3 Sdng các thành viên tĩnh.............................................................................27  
4.4 Hy đối tượng ..................................................................................................29  
4.5 Truyn tham s.................................................................................................30  
4.6 Np chng phương thc và hàm dng.............................................................32  
4.7 Đóng gói dliu vi property..........................................................................33  
Chương 5 Tha kế Đa hình...................................................................................35  
5.1 Đặc bit hoá và tng quát hoá..........................................................................35  
5.2 Skế tha.........................................................................................................35  
5.3 Đa hình.............................................................................................................37  
5.4 Lp tru tượng .................................................................................................38  
5.5 Lp gc ca tt ccác lp: Object...................................................................39  
5.6 Kiu Boxing và Unboxing ...............................................................................40  
5.7 Lp lng...........................................................................................................42  
Chương 6 Np chng toán t.....................................................................................44  
6.1 Cách dùng tkhoá operator.............................................................................44  
6.2 Cách htrcác ngôn ng.Net khác................................................................44  
6.3 Shu ích ca các toán t...............................................................................44  
6.4 Các toán tlogic hai ngôi ................................................................................45  
6.5 Toán tso sánh bng........................................................................................45  
6.6 Toán tchuyn đổi kiu (ép kiu) ...................................................................45  
Chương 7 Cu trúc.....................................................................................................48  
7.1 Định nghĩa cu trúc..........................................................................................48  
7.2 Cách to cu trúc..............................................................................................49  
Chương 8 Giao din...................................................................................................50  
8.1 Cài đặt mt giao din .......................................................................................50  
8.2 Truy xut phương thc ca giao din ..............................................................52  
8.3 Np chng phn cài đặt giao din....................................................................54  
8.4 Thc hin giao din mt cách tường minh ......................................................55  
Chương 9 Array, Indexer, and Collection .................................................................58  
9.1 Mng (Array) ...................................................................................................58  
9.2 Câu lnh foreach ..............................................................................................59  
9.3 Indexers............................................................................................................62  
9.4 Các giao din túi cha......................................................................................65  
9.5 Array Lists........................................................................................................65  
9.6 Hàng đợi...........................................................................................................65  
9.7 Stacks ...............................................................................................................66  
9.8 Dictionary.........................................................................................................66  
Chương 10 Chui.......................................................................................................67  
10.1 To chui mi ................................................................................................67  
10.2 Phương thc ToString() .................................................................................67  
10.3 Thao tác chui................................................................................................68  
10.4 Thao tác chui động.......................................................................................70  
Chương 11 Qun lý li...............................................................................................72  
11.1 Ném và bt bit l..........................................................................................73  
11.2 Đối tượng Exception......................................................................................80  
11.3 Các bit ltto ............................................................................................82  
11.4 Ném bit lln na. .......................................................................................83  
Chương 12 Delegate và Event ...................................................................................87  
12.1 Delegate (y thác, y quyn) .........................................................................87  
12.2 Event (Skin) ............................................................................................101  
Chương 13 Lp trình vi C#....................................................................................109  
13.1 ng dng Windows vi Windows Form.....................................................109  
Chương 14 Truy cp dliu vi ADO.NET ...........................................................144  
14.1 Cơ sdliu và ngôn ngtruy vn SQL ....................................................144  
14.2 Mt sloi kết ni hin đang sdng.........................................................144  
14.3 Kiến trúc ADO.NET ....................................................................................145  
14.4 Mô hình đối tượng ADO.NET.....................................................................146  
14.5 Trình cung cp dliu (.NET Data Providers)............................................148  
14.6 Khi svi ADO.NET ................................................................................148  
14.7 Sdng trình cung cp dliu được qun lý ..............................................151  
14.8 Làm vic vi các điu khin kết buc dliu .............................................152  
14.9 Thay đổi các bn ghi ca cơ sdliu........................................................161  
Chương 15 ng dng Web vi Web Forms............................................................173  
1.1  
Tìm hiu vWeb Forms............................................................................173  
15.1 Các skin ca Web Forms ........................................................................174  
15.2 Hin thchui lên trang................................................................................175  
15.3 Điu khin xác nhn hp..............................................................................178  
15.4 Mt sví dmu minh ha .........................................................................179  
Chương 16 Các dch vWeb...................................................................................192  
Chương 17 Assemblies và Versioning ....................................................................196  
17.1 Tp tin PE.....................................................................................................196  
17.2 Metadata.......................................................................................................196  
17.3 Ranh gii an ninh.........................................................................................196  
17.4 Shiu phiên bn (Versioning) ...................................................................196  
17.5 Manifest........................................................................................................196  
17.6 Đa Module Assembly...................................................................................197  
17.7 Assembly ni b(private assembly)............................................................198  
17.8 Assembly chia s(shared assembly)............................................................198  
Chương 18 Attributes và Reflection........................................................................200  
18.1 Attributes......................................................................................................200  
18.2 Attribute mc định (intrinsic attributes).......................................................200  
18.3 Attribute do lp trình viên to ra..................................................................201  
18.4 Reflection.....................................................................................................203  
Chương 19 Marshaling và Remoting.......................................................................204  
19.1 Min ng Dng (Application Domains) .....................................................204  
19.2 Context.........................................................................................................206  
19.3 Remoting......................................................................................................208  
Chương 20 Thread và Sự Đồng B.........................................................................215  
20.1 Thread ..........................................................................................................215  
20.2 Đồng bhóa (Synchronization)...................................................................216  
20.3 Race condition và DeadLock.......................................................................221  
Chương 21 Lung dliu........................................................................................223  
21.1 Tp tin và thư mc .......................................................................................223  
21.2 Đọc và ghi dliu........................................................................................230  
21.3 Bt đồng bnhp xut .................................................................................235  
21.4 Serialization..................................................................................................238  
21.5 Isolate Storage..............................................................................................244  
Chương 22 Lp trình .NET và COM.......................................................................246  
22.1 P/Invoke .......................................................................................................246  
22.2 Con tr..........................................................................................................248  
Phn 2 Xây dng mt ng dng minh ha..................................................................250  
Chương 23 Website dy hc ngôn ngC#..............................................................251  
23.1 Hin trng và yêu cu...................................................................................251  
23.2 Phân tích hướng đối tượng...........................................................................258  
23.3 Thiết kế hướng đối tượng.............................................................................262  
Tóm tt  
Đề tài này tp trung tìm hiu toàn bcác khái nim liên quan đến ngôn ngC#.  
Bi vì C# được Microsoft phát trin như là mt thành phn ca khung ng dng  
.NET Framework và hướng Internet nên đề tài này bao gm hai phn sau:  
Phn 1: Tìm hiu vngôn ngC#  
Vic tìm hiu bao gm ccác kiến thc nn tng vcông ngh.NET Framework,  
chun bcho các khái nim liên quan gia C# và .NET Framework. Sau đó tìm  
hiu vbcú pháp ca ngôn ngnày, bao gm toàn btp lnh, tkhóa, khái  
nim vlp trình hướng đối tượng theo C#, các htrlp trình hướng  
component ... Sau cùng là cách lp trình C# vi ng dng Window cho máy để  
bàn và C# vi các công nghhin đại như ASP.NET. ADO.NET, XML cho lp  
trình Web.  
Phn 2: Xây dng mt ng dng  
Phn này là báo cáo về ứng dng minh ha cho vic tìm hiu trên. Tên ng  
dng là Xây dng mt Website dy hc C#. Đây là ng dng Web cài đặt bng  
ngôn ngC# và ASP.NET. Trong đó ASP.NET được dùng để xây dng giao  
din tương tác vi người dùng; còn C# là ngôn nglp trình bên dưới. ng dng  
có thao tác cơ sdliu (Microsoft SQL Server) thông quan mô hình  
ADO.NET.  
Phn 1  
Tìm hiu ngôn ngC#  
1
C# và .Net Framework  
Gvhd: Nguyn Tn Trn Minh Khang  
Chương 1 C# và .Net Framework  
Mc tiêu ca C# là cung cp mt ngôn nglp trình đơn gin, an toàn, hin đại,  
hướng đối tượng, đặt trng tâm vào Internet, có khnăng thc thi cao cho môi  
trường .NET. C# là mt ngôn ngmi, nhưng tích hp trong nó nhng tinh hoa ca  
ba thp kphát trin ca ngôn nglp trình. Ta có thddàng thy trong C# có  
nhng đặc trưng quen thuc ca Java, C++, Visual Basic, …  
Đề tài này đặt trng tâm gii thiu ngôn ngC# và cách dùng nó như là mt công  
clp trình trên nn tng .NET. Vi ngôn ngC++, khi hc nó ta không cn quan  
tâm đến môi trường thc thi. Vi ngôn ngC#, ta hc để to mt ng dng .NET,  
nếu lơ là ý này có thblquan đim chính ca ngôn ngnày. Do đó, trong đề tài  
này xét C# tp trung trong ngcnh cthlà nn tng .NET ca Microsoft và trong  
các ng dng máy tính để bàn và ng dng Internet.  
Chương này trình bày chung vhai phn là ngôn ngC# và nn tng .NET, bao  
gm ckhung ng dng .NET (.NET Framework)  
1.1 Nn tng ca .NET  
Khi Microsoft công bC# vào tháng 7 năm 2000, vic khánh thành nó chlà mt  
phn trong srt nhiu skin mà nn tng .Net được công công b. Nn tng .Net  
là bô khung phát trin ng dng mi, nó cung cp mt giao din lp trình ng dng  
(Application Programming Interface - API) mi mcho các dch vvà hệ điu hành  
Windows, cthlà Windows 2000, nó cũng mang li nhiu kthut khác ni bt  
ca Microsoft sut tnhng năm 90. Trong số đó có các dch vCOM+, công nghệ  
ASP, XML và thiết kế hướng đối tượng, htrcác giao thc dch vweb mi như  
SOAP, WSDL và UDDL vi trng tâm là Internet, tt cả được tích hp trong kiến  
trúc DNA.  
Nn tng .NET bao gm bn nhóm sau:  
1. Mt tp các ngôn ng, bao gm C# và Visual Basic .Net; mt tp các công cụ  
phát trin bao gm Visual Studio .Net; mt tp đầy đủ các thư vin phc vụ  
cho vic xây dng các ng dng web, các dch vweb và các ng dng  
Windows; còn có CLR - Common Language Runtime: (ngôn ngthc thi  
dùng chung) để thc thi các đối tượng được xây dng trên bô khung này.  
2. Mt tp các Server Xí nghip .Net như SQL Server 2000. Exchange 2000,  
BizTalk 2000, … chúng cung cp các chc năng cho vic lưu trdliu quan  
h, thư đin t, thương mi đin tB2B, …  
2
C# và .Net Framework  
Gvhd: Nguyn Tn Trn Minh Khang  
3. Các dch vweb thương mi min phí, va được công bgn đậy như là dự  
án Hailstorm; nhà phát trin có thdùng các dch vnày để xây dng các ng  
dng đòi hi tri thc về định danh người dùng…  
4. .NET cho các thiết bkhông phi PC như đin thoi (cell phone), thiết bgame  
1.2 .NET Framework  
.Net htrtích hp ngôn ng, tc là ta có thkế tha các lp, bt các bit l, đa  
hình thông qua nhiu ngôn ng. .NET Framework thc hin được vic này nhvào  
đặc tCommon Type System - CTS (hthng kiu chung) mà tt ccác thành phn  
.Net đều tuân theo. Ví d, mi thtrong .Net đều là đối tượng, tha kế tlp gc  
System.Object.  
Ngoài ra .Net còn bao gm Common Language Specification - CLS (đặc tngôn  
ngchung). Nó cung cp các qui tc cơ bn mà ngôn ngmun tích hp phi tha  
mãn. CLS chra các yêu cu ti thiu ca ngôn nghtr.Net. Trình biên dch  
tuân theo CLS sto các đối tượng có thtương hp vi các đối tượng khác. Bthư  
vin lp ca khung ng dng (Framework Class Library - FCL) có thể được dùng  
bi bt kngôn ngnào tuân theo CLS.  
.NET Framework nm tng trên ca hệ điu hành (bt khệ điu hành nào không  
chlà Windows). .NET Framework bao bao gm:  
Bn ngôn ngchính thc: C#, VB.Net, C++, và Jscript.NET  
Common Language Runtime - CLR, nn tng hướng đối tượng cho phát trin  
ng dng Windows và web mà các ngôn ngcó thchia ssdng.  
Bthư vin Framework Class Library - FCL.  
Hình 1-1 Kiến trúc khung ng dng .Net  
3
C# và .Net Framework  
Gvhd: Nguyn Tn Trn Minh Khang  
Thành phn quan trng nht ca .NET Framework là CLR, nó cung cp môi trường  
cho ng dng thc thi, CLR là mt máy o, tương tmáy o Java. CLR kích hot  
đối tượng, thc hin kim tra bo mt, cp phát bnh, thc thi và thu dn chúng.  
Trong Hình 1-1 tng trên ca CLR bao gm:  
Các lp cơ sở  
Các lp dliu và XML  
Các lp cho dch vweb, web form, và Windows form.  
Các lp này được gi chung là FCL, Framework Class Library, cung cp API  
hướng đối tượng cho tt ccác chc năng ca .NET Framework (hơn 5000 lp).  
Các lp cơ stương tvi các lp trong Java. Các lp này htrcác thao tác nhp  
xut, thao tác chui, văn bn, qun lý bo mt, truyn thông mng, qun lý tiu trình  
và các chc năng tng hp khác …  
Trên mc này là lp dliu và XML. Lp dliu htrvic thao tác các dliu  
trên cơ sdliu. Các lp này bao gm các lp SQL (Structure Query Language:  
ngôn ngtruy vn có cu trúc) cho phép ta thao tác dliu thông qua mt giao tiếp  
SQL chun. Ngoài ra còn mt tp các lp gi là ADO.Net cũng cho phép thao tác  
dliu. Lp XML htrthao tác dliu XML, tìm kiếm và din dch XML.  
Trên lp dliu và XML là lp htrxây dng các ng dng Windows (Windows  
forms), ng dng Web (Web forms) và dch vWeb (Web services).  
1.3 Biên dch và ngôn ngtrung gian (MSIL)  
Vi .NET chương trình không biên dch thành tp tin thc thi, mà biên dch thành  
ngôn ngtrung gian (MSIL - Microsoft Intermediate Language, viết tt là IL), sau  
đó chúng được CLR thc thi. Các tp tin IL biên dch tC# đồng nht vi các tp  
tin IL biên dch tngôn ng.Net khác.  
Khi biên dch dán, mã ngun C# được chuyn thành tp tin IL lưu trên đĩa. Khi  
chy chương trình thì IL được biên dch (hay thông dch) mt ln na bng trình  
Just In Time - JIT, khi này kết qulà mã máy và bxlý sthc thi.  
Trình biên dch JIT chchy khi có yêu cu. Khi mt phương thc được gi, JIT  
phân tích IL và sinh ra mã máy ti ưu cho tng loi máy. JIT có thnhn biết mã  
ngun đã được biên dch chưa, để có thchy ngay ng dng hay phi biên dch li.  
CLS có nghĩa là các ngôn ng.Net cùng sinh ra mã IL. Các đối tượng được to theo  
mt ngôn ngnào đó sẽ được truy cp và tha kế bi các đối tượng ca ngôn ngữ  
khác. Vì vy ta có thto được mt lp cơ strong VB.Net và tha kế nó tC#.  
4
C# và .Net Framework  
Gvhd: Nguyn Tn Trn Minh Khang  
1.4 Ngôn ngC#  
C# là mt ngôn ngrt đơn gin, vi khong 80 tkhoá và hơn mười kiu dliu  
dng sn, nhưng C# có tính din đạt cao. C# htrlp trình có cu trúc, hướng đối  
tượng, hướng thành phn (component oriented).  
Trng tâm ca ngôn nghướng đối tượng là lp. Lp định nghĩa kiu dliu mi,  
cho phép mrng ngôn ngtheo hướng cn gii quyết. C# có nhng tkhoá dành  
cho vic khai báo lp, phương thc, thuc tính (property) mi. C# htrợ đầy đủ  
khái nim trct trong lp trình hướng đối tượng: đóng gói, tha kế, đa hình.  
Định nghĩa lp trong C# không đòi hi tách ri tp tin tiêu đề vi tp tin cài đặt như  
C++. Hơn thế, C# htrkiu sưu liu mi, cho phép sưu liu trc tiếp trong tp tin  
mã ngun. Đến khi biên dch sto tp tin sưu liu theo định dng XML.  
C# htrkhái nim giao din, interfaces (tương tJava). Mt lp chcó thkế  
tha duy nht mt lp cha nhưng có thế cài đặt nhiu giao din.  
C# có kiu cu trúc, struct (không ging C++). Cu trúc là kiu hng nhvà bgii  
hn.Cu trúc không ththa kế lp hay được kế tha nhưng có thcài đặt giao din.  
C# cung cp nhng đặc trưng lp trình hướng thành phn như property, skin và  
dn hướng khai báo (được gi là attribute). Lp trình hướng component được htrợ  
bi CLR thông qua siêu dliu (metadata). Siêu dliu mô tcác lp bao gm các  
phương thc và thuc tính, các thông tin bo mt ….  
Assembly là mt tp hp các tp tin mà theo cách nhìn ca lp trình viên là các thư  
vin liên kết động (DLL) hay tp tin thc thi (EXE). Trong .NET mt assembly là  
mt đon vca vic tái sdng, xác định phiên bn, bo mt, và phân phi. CLR  
cung cp mt scác lp để thao tác vi assembly.  
C# cũng cho truy cp trc tiếp bnhdùng con trkiu C++, nhưng vùng mã đó  
được xem như không an toàn. CLR skhông thc thi vic thu dn rác tự động các  
đối tượng được tham chiếu bi con trcho đến khi lp trình viên tgii phóng.  
5
Khi đầu  
Gvhd: Nguyn Tn Trn Minh Khang  
Chương 2 Khi đầu  
Chương này ta sto, biên dch và chy chương trình “Hello World” bng ngôn ngữ  
C#. Phân tích ngn gn chương trình để gii thiu các đặc trưng chính yếu trong  
ngôn ngC#.  
d2-1 Chương trình Hello World  
class HelloWorld  
{
static void Main( )  
{
// sdng đối tượng console ca hthng  
System.Console.WriteLine("Hello World");  
}
}
Sau khi biên dch và chy HelloWorld, kết qulà dòng ch“Hello World” hin thị  
trên màn hình.  
2.1 Lp, đối tượng và kiu  
Bn cht ca lp trình hướng đối tượng là to ra các kiu mi. Mt kiu biu din  
mt vt gì đó. Ging vi các ngôn nglp trình hướng đối tượng khác, mt kiu  
trong C# cũng định nghĩa bng tkhoá class (và được gi là lp) còn thhin ca  
lp được gi là đối tượng.  
Xem Ví d2-1 ta thy cách khai báo mt lp HelloWorld. Ta thy ngay là cách  
khai báo và ni dung ca mt lp hoàn toàn ging vi ngôn ngJava và C++, chỉ  
có khác là cui khai báo lp không cn du “;”  
2.1.1 Phương thc  
Các hành vi ca mt lp được gi là các phương thc thành viên (gi tt là phương  
thc) ca lp đó. Mt phương thc là mt hàm (phương thc thành viên còn gi là  
hàm thành viên). Các phương thc định nghĩa nhng gì mà mt lp có thlàm.  
Cách khai báo, ni dung và cách sdng các phương thc ging hoàn toàn vi Java  
và C++. Trong ví dtrên có mt phương thc đặc bit là phương thc Main() (như  
hàm main() trong C++) là phương thc bt đầu ca mt ng dng C#, có thtrvề  
kiu void hay int. Mi mt chương trình (assembly) có thcó nhiu phương thc  
Main nhưng khi đó phi chỉ định phương thc Main() nào sbt đầu chương trình.  
6
Khi đầu  
Gvhd: Nguyn Tn Trn Minh Khang  
2.1.2 Các ghi chú  
C# có ba kiu ghi chú trong đó có hai kiu rt quen thuc ca C++ là dùng: "//" và  
"/* … */". Ngoài ra còn mt kiu ghi chú na strình bày các chương kế.  
d2-2 Hai hình thc ghi chú trong C#  
class HelloWorld  
{
static void Main( ) // Đây là ghi trên mt dòng  
{
/* Bt đầu ghi chú nhiu dòng  
Vn còn trong ghi chú  
Kết thúc ghi chú bng */  
System.Console.WriteLine("Hello World");  
}
}
2.1.3 ng dng dng console  
“Hello World” là mt ng dng console. Các ng dng dng này thường không có  
giao din người dùng đồ ha Các nhp xut đều thông qua các console chun (dng  
dòng lnh như DOS).  
Trong ví dtrên, phương thc Main() viết ra màn hình dòng “Hello World”. Do  
màn hình qun lý mt đối tượng Console, đối tượng này có phương thc  
WriteLine() cho phép đặt mt dòng chlên màn hình. Để gi phương thc này ta  
dùng toán t“.”, như sau: Console.WriteLine(…).  
2.1.4 Namespaces - Vùng tên  
Console là mt trong rt nhiu (cngàn) lp trong bthư vin .NET. Mi lp đều  
có tên và như vy có hàng ngàn tên mà lp trình viên phi nhhoc phi tra cu  
mi khi sdng. Vn đề là phi làm sao gim bt lượng tên phi nh.  
Ngoài vn đề phi nhquá nhiu tên ra, còn mt nhn xét sau: mt slp có mi  
liên hnào đó vmt ngnghĩa, ví dnhư lp Stack, Queue, Hashtable … là các  
lp cài đặt cu trúc dliu túi cha. Như vy có thnhóm nhng lp này thành mt  
nhóm và thay vì phi nhtên các lp thì lp trình viên chcn nhtên nhóm, sau đó  
có ththc hin vic tra cu tên lp trong nhóm nhanh chóng hơn. Nhóm là mt  
vùng tên trong C#.  
Mt vùng tên có thcó nhiu lp và vùng tên khác. Nếu vùng tên A nm trong vùng  
tên B, ta nói vùng tên A là vùng tên con ca vùng tên B. Khi đó các lp trong vùng  
tên A được ghi như sau: B.A.Tên_lp_trong_vùng_tên_A  
System là vùng tên cha nhiu lp hu ích cho vic giao tiếp vi hthng hoc các  
lp công dng chung như lp Console, Math, Exception….Trong ví dHelloWorld  
trên, đối tượng Console được dùng như sau:  
System.Console.WriteLine("Hello World");  
7
Khi đầu  
Gvhd: Nguyn Tn Trn Minh Khang  
2.1.5 Toán tchm “.”  
Như trong Ví d2-1 toán tchm được dùng để truy sut dliu và phương thc  
mt lp (như Console.WriteLine()), đồng thi cũng dùng để chỉ định tên lóp trong  
mt vùng tên (như System.Console).  
Toán tdu chm cũng được dùng để truy xut các vùng tên con ca mt vùng tên  
Vùng_tên.Vùng_tên_con.Vùng_tên_con_con  
2.1.6 Tkhoá using  
Nếu chương trình sdng nhiu ln phương thc Console.WriteLine, tSystem sẽ  
phi viết nhiu ln. Điu này có thkhiến lp trình viên nhàm chán. Ta skhai báo  
rng chương trình có sdng vùng tên System, sau đó ta dùng các lp trong vùng  
tên System mà không cn phi có tSystem đi trước.  
d2-3 Tkhóa using  
// Khai báo chương trình có sdng vùng tên System  
using System;  
class HelloWorld  
{
static void Main( )  
{
// Console thuc vùng tên System  
Console.WriteLine("Hello World");  
}
}
2.1.7 Phân bit hoa thường  
Ngôn ngC# cũng phân bit chhoa thường ging như Java hay C++ (không như  
VB). Ví dnhư WriteLine khác vi writeLine và chai cùng khác vi  
WRITELINE. Tên biến, hàm, hng … đều phân bit chhoa chthường.  
2.1.8 Tkhoá static  
Trong Ví d2-1 phương thc Main() được khai báo kiu trvlà void và dùng từ  
khoá static. Tkhoá static cho biết là ta có thgi phương thc Main() mà không  
cn to mt đối tượng kiu HelloWorld.  
2.2 Phát trin “Hello World”  
Có hai cách để viết, biên dch và chy chương trình HelloWorld là dùng môi trưởng  
phát trin tích hp (IDE) Visual Studio .Net hay viết bng trình son tho văn bn  
và biên dch bng dòng lnh. IDE Vs.Net ddùng hơn. Do đó, trong đề tài này chỉ  
trình bày theo hướng làm vic trên IDE Visual Studio .Net.  
8
Khi đầu  
Gvhd: Nguyn Tn Trn Minh Khang  
2.2.1 Son tho “Hello World”  
Để to chương trình “Hello World” trong IDE, ta chn Visual Studio .Net tthanh  
thc đơn. Tiếp theo trên màn hình ca IDE chn File > New > Project tthanh  
thc đơn, theo đó xut hin mt ca snhư sau:  
Hình 2-1 To mt ng dng console trong VS.Net  
Để to chương trình “Hello World” ta chn Visual C# Project > Console  
Application, đin HelloWorld trong ô Name, chn đường dn và nhn OK. Mt ca  
sson tho xut hin.  
9
Khi đầu  
Gvhd: Nguyn Tn Trn Minh Khang  
Hình 2-2 Ca sson tho ni dung mã ngun  
Vs.Net tto mt smã, ta cn chnh sa cho phù hp vi chương trình ca mình.  
2.2.2 Biên dch và chy “Hello World”  
Sau khi đã đầy đủ mã ngun ta tiến hành biên dch chương trình: nhn “Ctrl–Shift–  
B” hay chn Build > Build Solution. Kim tra xem chương trình có li không ca  
sOutput cui màn hình. Khi biên dch chương trình nó slưu li thành tp tin .cs.  
Chy chương trình bng “Ctrl–F5” hay chn Debug > Start Without Debugging.  
2.2.3 Trình gri ca Visual Studio .Net  
Trình gri ca VS.Net rt mnh hu ích. Ba knăng chính yếu để sdng ca  
trình gri là:  
Cách đặt đim ngt (breakpoint) và làm sao chy cho đến đim ngt  
Làm thế nào chy tng bước và chy vượt qua mt phương thc.  
Làm sao để quan sát và hiu chnh giá trca biến, dliu thành viên, …  
Cách đơn gin nht để đặt đim ngt là bm chut trái vào phía ltrái, ti đó shin  
lên mt chm đỏ.  
10  
Khi đầu  
Gvhd: Nguyn Tn Trn Minh Khang  
Hình 2-3 Minh ha mt đim ngt  
Cách dùng trình gri hoàn toàn ging vi trình gri trong VS 6.0. Nó cho phép  
ta dng li mt vtrí bt k, cho ta kim tra giá trtc thi bng cách di chuyn  
chut đến vtrbiến. Ngoài ra, khi gri ta cũng có thxem giá trcác biến thông  
qua ca sWatch Local.  
Để chy trong chế độ gri ta chn Debug Æ Start hay nhn F5, mun chy tng  
bước ta bm F11 và chy vượt qua mt phương thc ta bm F10.  
11  
Nhng cơ sca ngôn ngC#  
Gvhd: Nguyn Tn Trn Minh Khang  
Chương 3 Nhng cơ sca ngôn ngC#  
Trong chương này strình bày vhthng kiu trong C#; phân bit kiu dng sn  
(int, long, bool, …) vi các kiu do người dùng định nghĩa. Ngoài ra, chương này  
cũng strình bày cách to và dùng biến, hng; gii thiu kiu lit kê, chui, kiu  
định danh, biu thc, và câu lnh. Phn hai ca chương trình bày vcác cu trúc  
điu kin và các toán tlogic, quan h, toán hc, …  
3.1 Các kiu  
C# buc phi khai báo kiu ca đối tượng được to. Khi kiu được khai báo rõ ràng,  
trình biên dch sgiúp ngăn nga li bng cách kim tra dliu được gán cho đối  
tượng có hp lkhông, đồng thi cp phát đúng kích thước bnhcho đối tượng.  
C# phân thành hai loi: loai dliu dng sn và loi do người dùng định nghĩa.  
C# cũng chia tp dliu thành hai kiu: giá trtham chiếu. Biến kiu giá trị được  
lưu trong vùng nhstack, còn biến kiu tham chiếu được lưu trong vùng nhheap.  
C# cũng htrkiu con trca C++, nhưng ít khi được sdng. Thông thường con  
trchỉ được sdng khi làm vic trc tiếp vi Win API hay các đối tượng COM.  
3.1.1 Loi dliu định sn  
C# có nhiu kiu dliu định sn, mi kiu ánh xạ đến mt kiu được htrbi  
CLS (Commom Language Specification), ánh xạ để đảm bo rng đối tượng được  
to trong C# không khác gì đối tượng được to trong các ngôn ng.NET khác Mi  
kiu có mt kích thước cố định được lit kê trong bng sau  
Bng 3-1 Các kiu dng sn  
Kích thước  
Kiu  
byte  
Kiu .Net  
Byte  
Mô t- giá trị  
(byte)  
1
1
1
1
2
2
4
Không du (0..255)  
Mã ký thUnicode  
true hay false  
char  
bool  
sbyte  
short  
ushort  
int  
Char  
Boolean  
Sbyte  
Int16  
Có du (-128 .. 127)  
Có du (-32768 .. 32767)  
Uint16  
Int32  
Không du (0 .. 65535)  
Có du (-2147483647 .. 2147483647)  
12  
Nhng cơ sca ngôn ngC#  
Gvhd: Nguyn Tn Trn Minh Khang  
uint  
4
4
8
8
Uint32  
Single  
Double  
Decimal  
Int64  
Không du (0 .. 4294967295)  
float  
Sthc (±1.5*10-45 .. ±3.4*1038)  
Sthc (±5.0*10-324 .. ±1.7*10308)  
scó du chm tĩnh vi 28 ký svà du chm  
double  
decimal  
long  
Snguyên có du (- 9223372036854775808 ..  
8
8
9223372036854775807)  
ulong  
Uint64  
Snguyên không du (0 .. 0xffffffffffffffff.)  
3.1.1.1 Chn mt kiu định sn  
Tuvào tng giá trmun lưu trmà ta chn kiu cho phù hp. Nếu chn kiu quá  
ln so vi các giá trcn lưu slàm cho chương trình đòi hi nhiu bnhvà chy  
chm. Trong khi nếu giá trcn lưu ln hơn kiu thc lưu slàm cho giá trcác biến  
bsai và chương trình cho kết qusai.  
Kiu char biu din mt ký tUnicode. Ví d“\u0041” là ký t“A” trên bng  
Unicode. Mt ský tự đặc bit được biu din bng du “\” trước mt ký tkhác.  
Bng 3-2 Các ký tự đặc bit thông dng  
Ký t  
\’  
Nghĩa  
du nháy đơn  
du nháy đôi  
du chéo ngược “\”  
Null  
\”  
\\  
\0  
\a  
Alert  
\b  
\f  
lùi vsau  
Form feed  
xung dòng  
về đầu dòng  
Tab ngang  
Tab dc  
\n  
\r  
\t  
\v  
3.1.1.2 Chuyn đổi kiu định sn  
Mt đối tượng có thchuyn tkiu này sang kiu kia theo hai hình thc: ngm  
hoc tường minh. Hình thc ngm được chuyn tự động còn hình thc tường minh  
cn scan thip trc tiếp ca người lp trình (ging vi C++ và Java).  
short x = 5;  
int y ;  
y = x; // chuyn kiu ngm định - tự động  
x = y; // li, không biên dch được  
x = (short) y; // OK  
13  
Nhng cơ sca ngôn ngC#  
Gvhd: Nguyn Tn Trn Minh Khang  
3.2 Biến và hng  
Biến dùng để lưu trdliu. Mi biến thuc vmt kiu dliu nào đó.  
3.2.1 Khi to trước khi dùng  
Trong C#, trước khi dùng mt biến thì biến đó phi được khi to nếu không trình  
biên dch sbáo li khi biên dch. Ta có thkhai báo biến trước, sau đó khi to và  
sdng; hay khai báo biến và khi gán trong lúc khai báo.  
int x; // khai báo biến trước  
x = 5; // sau đó khi gán giá trvà sdng  
int y = x; // khai báo và khi gán cùng lúc  
3.2.2 Hng  
Hng là mt biến nhưng giá trkhông thay đổi theo thi gian. Khi cn thao tác trên  
mt giá trxác định ta dùng hng. Khai báo hng tương tkhai báo biến và có thêm  
tkhóa const trước. Hng mt khi khi động xong không ththay đổi được na.  
const int HANG_SO = 100;  
3.2.3 Kiu lit kê  
Enum là mt cách thc để đặt tên cho các trnguyên (các trkiu snguyên, theo  
nghĩa nào đó tương tnhư tp các hng), làm cho chương trình rõ ràng, dhiu  
hơn. Enum không có hàm thành viên. Ví dto mt enum tên là Ngay như sau:  
enum Ngay {Hai, Ba, Tu, Nam, Sau, Bay, ChuNhat};  
Theo cách khai báo này enum ngày có by giá trnguyên đi t0 = Hai, 1 = Ba, 2 =  
Tư … 7 = ChuNhat.  
d3-1 Sdng enum Ngay  
using System;  
public class EnumTest  
{
enum Ngay {Hai, Ba, Tu, Nam, Sau, Bay, ChuNhat };  
public static void Main()  
{
int x = (int) Ngay.Hai;  
int y = (int) Ngay.Bay;  
Console.WriteLine("Thu Hai = {0}", x);  
Console.WriteLine("Thu Bay = {0}", y);  
}
}
Kết quả  
Thu Hai = 0  
Thu Bay = 5  
14  
Nhng cơ sca ngôn ngC#  
Gvhd: Nguyn Tn Trn Minh Khang  
Mc định enum gán giá trị đầu tiên là 0 các trsau ln hơn giá trtrước mt đơn v,  
và các trnày thuc kiu int. Nếu mun thay đổi trmc định này ta phi gán trị  
mong mun.  
d3-2 Sdng enum Ngay (2)  
using System;  
namespace ConsoleApplication  
{
enum Ngay: byte { Hai=2,Ba,Tu,Nam,Sau,Bay,ChuNhat=10 };  
class EnumTest  
{
static void Main(string[] args)  
{
byte x = (byte)Ngay.Ba;  
byte y = (byte)Ngay.ChuNhat;  
Console.WriteLine("Thu Ba = {0}", x);  
Console.WriteLine("Chu Nhat = {0}", y);  
Console.Read();  
}
}
}
Kết qu:  
Thu Ba = 3  
Chu Nhat = 10  
Kiu enum ngày được viết li vi mt sthay đổi, giá trcho Hai là 2, giá trcho Ba  
là 3 (Hai + 1) …, giá trcho ChuNhat là 10, và các giá trnày slà kiu byte.  
Cú pháp chung cho khai báo mt kiu enum như sau  
[attributes] [modifiers] enum identifier [:base-type]  
{
enumerator-list  
};  
attributes (tùy chn): các thông tin thêm (đề cp sau)  
modifiers (tùy chn): public, protected, internal, private  
(các btxác định phm vi truy xut)  
identifer: tên ca enum  
base_type (tùy chn): kiu s, ngoi trchar  
enumerator-list: danh sách các thành viên.  
3.2.4 Chui  
Chui là kiu dng sn trong C#, nó là mt chui các ký tự đơn l. Khi khai báo  
mt biến chui ta dùng tkhoá string. Ví dkhai báo mt biến string lưu chui  
"Hello World"  
string myString = "Hello World";  
3.2.5 Định danh  
Định danh là tên mà người lp trình chn đại din mt kiu, phương thc, biến,  
hng, đối tượng… ca h. Định danh phi bt đầu bng mt ký thay du “_”.  
Định danh không được trùng vi tkhoá C# và phân bit hoa thường.  
15  
Nhng cơ sca ngôn ngC#  
Gvhd: Nguyn Tn Trn Minh Khang  
3.3 Biu thc  
Bt kcâu lnh định lượng giá trị được gi là mt biu thc (expression). Phép gán  
sau cũng được gi là mt biu thc vì nó định lượng giá trị được gán (là 32)  
x = 32;  
vì vy phép gán trên có thể được gán mt ln na như sau  
y = x = 32;  
Sau lnh này y có giá trca biu thc x = 32 và vì vy y = 32.  
3.4 Khong trng  
Trong C#, khong trng, du tab, du xung dòng đều được xem là khong trng  
(whitespace). Do đó, du cách dù ln hay nhỏ đều như nhau nên ta có:  
x = 32;  
cũng như  
x
=
32;  
Ngoi trkhong trng trong chui ký tthì có ý nghĩa riêng ca nó.  
3.5 Câu lnh  
Cũng như trong C++ và Java mt chthhoàn chnh thì được gi là mt câu lnh  
(statement). Chương trình gm nhiu câu lnh, mi câu lnh kết thúc bng du “;”.  
Ví d:  
int x; // là mt câu lnh  
x = 23; // mt câu lnh khác  
Ngoài các câu lnh bình thường như trên, có các câu lnh khác là: lnh rnhánh  
không điu kin, rnhánh có điu kin và lnh lp.  
3.5.1 Các lnh rnhánh không điu kin  
Có hai loi câu lnh rnhánh không điu kin. Mt là lnh gi phương thc: khi  
trình biên dch thy có li gi phương thc nó stm dng phương thc hin hành  
và nhy đến phương thc được gi cho đến hết phương thc này strvphương  
thc cũ.  
d3-3 Gi mt phương thc  
using System;  
class Functions  
{
static void Main( )  
{
Console.WriteLine("In Main! Calling SomeMethod( )...");  
SomeMethod( );  
Console.WriteLine("Back in Main( ).");  
}
static void SomeMethod( )  
{
16  
Nhng cơ sca ngôn ngC#  
Gvhd: Nguyn Tn Trn Minh Khang  
Console.WriteLine("Greetings from SomeMethod!");  
}
}
Kết qu:  
In Main! Calling SomeMethod( )...  
Greetings from SomeMethod!  
Back in Main( ).  
Cách thhai để to các câu lnh rnhánh không điu kin là dùng tkhoá: goto,  
break, continue, return, hay throw. Cách tkhóa này sẽ được gii thiu trong các  
phn sau.  
3.5.2 Lnh rnhánh có điu kin  
Các tkhóa if-else, while, do-while, for, switch-case, dùng để điu khin dòng chy  
chương trình. C# gili tt ccác cú pháp ca C++, ngoi trswitch có vài ci tiến.  
3.5.2.1 Lnh If .. else …  
Cú pháp:  
if ( biu thc logic )  
khi lnh;  
hoc  
if ( biu thc logic )  
khi lnh 1;  
else  
khi lnh 2;  
Ghi chú: Khi lnh là mt tp các câu ln trong cp du “{…}”. Bt kỳ  
nơi đâu có câu lnh thì ở đó có thviết bng mt khi lnh.  
Biu thc logic là biu thc cho giá trdúng hoc sai (true hoc false). Nếu “biu  
thc logic” cho giá trị đúng thì “khi lnh” hay “khi lnh 1” sẽ được thc thi,  
ngược li “khi lnh 2” sthc thi. Mt đim khác bit vi C++ là biu thc trong  
câu lnh if phi là biu thc logic, không thlà biu thc s.  
3.5.2.2 Lnh switch  
Cú pháp:  
switch ( biu_thc_la_chn )  
{
case biu_thc_hng :  
khi lnh;  
lnh nhy;  
[ default :  
khi lnh;  
lnh nhy; ]  
}
Biu thc la chn là biu thc sinh ra trnguyên hay chui. Switch sso sánh  
biu_thc_la_chn vi các biu_thc_hng để biết phi thc hin vi khi lnh  
nào. Lnh nhy như break, goto…để thoát khi câu switch và bt buc phi có.  
17  
Nhng cơ sca ngôn ngC#  
Gvhd: Nguyn Tn Trn Minh Khang  
int nQuyen = 0;  
switch ( sQuyenTruyCap )  
{
case “Administrator”:  
nQuyen = 1;  
break;  
case “Admin”:  
goto case “Administrator”;  
default:  
nQuyen = 2;  
break;  
}
3.5.3 Lnh lp  
C# cung cp các lnh lp ging C++ như for, while, do-while và lnh lp mi  
foreach. Nó cũng htrcác câu lnh nhy như: goto, break, continue return.  
3.5.3.1 Lnh goto  
Lnh goto có thdùng để to lnh nhy nhưng nhiu nhà lp trình chuyên nghip  
khuyên không nên dùng câu lnh này vì nó phá vtính cu trúc ca chương trình.  
Cách dùng câu lnh này như sau: (ging như trong C++)  
1. To mt nhãn  
2. goto đến nhãn đó.  
3.5.3.2 Vòng lp while  
Cú pháp:  
while ( biu_thc_logic )  
khi_lnh;  
Khi_lnh sẽ được thc hin cho đến khi nào biu thc còn đúng. Nếu ngay từ đầu  
biu thc sai, khi lnh skhông được thc thi.  
3.5.3.3 Vòng lp do … while  
Cú pháp:  
do  
khi_lnh  
while ( biếu_thc_logic )  
Khác vi while khi lnh sẽ được thc hin trước, sau đó biu thc được kim tra.  
Nếu biu thc đúng khi lnh li được thc hin.  
3.5.3.4 Vòng lp for  
Cú pháp:  
for ( [khi_to_biến_đếm]; [biu_thc]; [gia_tăng_biến_đếm] )  
khi lnh;  
d3-4 Tính tng các snguyên ta đến b  
int a = 10; int b = 100; int nTong = 0;  
18  
Nhng cơ sca ngôn ngC#  
Gvhd: Nguyn Tn Trn Minh Khang  
for ( int i = a; i <= b; i++ )  
{
nTong += i;  
}
Câu lnh lp foreach sẽ được trình bày các chương sau.  
3.5.3.5 Câu lnh break, continue, và return  
Cba câu lnh break, continue, return rt quen thuc trong C++ và Java, trong  
C#, ý nghĩa và cách sdng chúng hoàn toàn ging vi hai ngôn ngnày.  
3.6 Toán tử  
Các phép toán +, -, *, / là mt ví dvtoán t. Áp dng các toán tnày lên các biến  
kiu sta có kết qunhư vic thc hin các phép toán thông thường.  
int a = 10;  
int b = 20;  
int c = a + b; // c = 10 + 20 = 30  
C# cung cp cp nhiu loi toán tkhác nhau để thao tác trên các kiu biến dliu,  
được lit kê trong bng sau theo tng nhóm ngnghĩa.  
Bng 3-3 Các nhóm toán ttrong C#  
Nhóm toán tử  
Toán hc  
Logic  
Toán t  
Ý nghĩa  
+ - * / %  
cng , tr, nhân chia, ly phn dư  
& | ^ ! ~ && || true phép toán logic và thao tác trên bit  
false  
Ghép chui  
Tăng, gim  
+
ghép ni 2 chui  
++, --  
tăng / gim toán hng lên / xung 1. Đứng  
trước hoc sau toán hng.  
Dch bit  
Quan hệ  
<< >>  
dch trái, dch phi  
== != < > <= >=  
bng, khác, nh/ln hơn, nh/ln hơn  
hoc bng  
Gán  
= += -= *= /= %= &=  
|= ^= <<= >>=  
phép gán  
Chsố  
[]  
cách truy xut phn tca mng  
Ép kiu  
()  
Indirection và  
Address  
* -> [] &  
dùng cho con trỏ  
3.6.1 Toán tgán (=)  
Toán tnày cho phép thay đổi các giá trca biến bên phi toán tbng giá trbên  
trái toán t.  
19  
Nhng cơ sca ngôn ngC#  
Gvhd: Nguyn Tn Trn Minh Khang  
3.6.2 Nhóm toán ttoán hc  
C# dùng các toàn tshc vi ý nghĩa theo đúng tên ca chúng như: + (cng), –  
(tr) , * (nhân) và / (chia). Tùy theo kiu ca hai toán hng mà toán ttrvkiu  
tương ng. Ngoài ra, còn có toán t% (ly phn dư) được sdng trong các kiu số  
nguyên.  
3.6.3 Các toán ttăng và gim  
C# cũng kế tha tC++ và Java các toán t: +=,-=, *=, /= , %= nhm làm đơn  
gin hoá. Nó còn kế tha các toán ttin thu t(như biến++, hay ++biến) để  
gim bt scng knh trong các toán tcổ đin.  
3.6.4 Các toán tquan hệ  
Các toán tquan hệ được dùng để so sánh hai giá trvi nhau và kết qutrvcó  
kiu Boolean. Toán tquan hgm có: == (so sánh bng), != (so sánh khác), > (so  
sánh ln hơn), >= (ln hơn hay bng), < (so sánh nhhơn), <= (nhhơn hay bng).  
3.6.5 Các toán tlogic  
Các toán tlogic gm có: && (), || (hoc), ! (phủ định). Các toán tnày được  
dùng trong các biu thc điu kin để kết hp các toán tquan htheo mt ý nghĩa  
nht định.  
3.6.6 Thtcác toán tử  
Đối vi các biu thc toán, thtự ưu tiên là thtự được qui định trong toán hc.  
Còn thtự ưu tiên thc hin ca các nhóm toán tử được lit kê theo bng dưới đây  
Bng 3-4 Thtự ưu tiên ca các nhóm toán t(chiu ưu tiên ttrên xung)  
Nhóm toán tử  
Toán tử  
Ý nghĩa  
Primary (chính)  
{x} x.y f(x) a[x] x++  
x--  
Unary  
Nhân  
+ - ! ~ ++x –x (T)x  
* / %  
Nhân, chia, ly phn dư  
cng, trù  
Cng  
+ -  
Dch bít  
Quan hệ  
<< >>  
Dch trái, dch phi  
< > <= >= is  
nhhơn, ln hơn, nhhơn hay bng,  
ln hơn hay bng và là  
Bng  
== !=  
bng, khác  
trên bit.  
Xor trên bit  
hoc trên bit  
Logic trên bit AND &  
XOR  
OR  
^
|
20  
Nhng cơ sca ngôn ngC#  
Gvhd: Nguyn Tn Trn Minh Khang  
Điu kin AND  
Điu kin OR  
Điu kin  
&&  
||  
?:  
trên biu thc điu kin  
Hoc trên biu thc điu kin  
điu kin tương tif  
Assignment  
= *= /= %= += -= <<=  
=>> &= ^= |=  
3.6.7 Toán ttam phân  
Cú pháp:  
<biu thc điu kin>? <biu thc 1>: <biu thc 2>;  
Ý nghĩa:  
Nếu biu thc điu kin đúng thì thc hin biu thc 1.  
Nếu sai thì thc hin biu thc 2.  
3.7 To vùng tên  
Như đã có gii thích trong phân tích ví dHelloWorld, vùng tên là mt cách tchc  
mã ngun thành các nhóm có ngnghĩa liên quan. Ví d:  
Trong mô hình kiến trúc 3 lp (3 tng, tiếng Anh là 3 – tier Architecture) chia mt  
ng dng ra thành 3 tng: tng giao din, tng nghip vvà tng dliu  
(Presentation, Bussiness và Data). Ta có thchia dán thành 3 vùng tên tương ng:  
Presentation, Bussiness và Data. Các vùng tên này cha các lp thuc vtng ca  
mình.  
Mt vùng tên cha các lp và các vùng tên con khác. Vy trong ví dtrên ta sto  
mt vùng tên chung cho ng dng là MyApplication và ba vùng tên kia slà ba  
vùng tên con ca vùng tên MyApplication. Cách này gii quyết được trường hp  
nếu ta có nhiu dán mà chcó 3 vùng tên và dn đến vic không biết mt lp  
thuc vùng tên Data nhưng không biết thuc dán nào.  
Sô ñoà caây vuøng teân  
MyApplication  
Presentation  
Bussiness  
Data  
vuøng teân con  
Caùc lôùp  
vuøng teân con  
Caùc lôùp  
vuøng teân con  
Caùc lôùp  
Vùng tên con được truy xut thông qua tên vùng tên cha cách nhau bng du chm.  
Để khai báo vùng tên ta sdng tkhóa namespace. Ví ddưới đây là 2 cách khai  
báo các vùng tên trong ví dụ ở trên.  
21  
Nhng cơ sca ngôn ngC#  
Gvhd: Nguyn Tn Trn Minh Khang  
Cách 1  
namespace MyApplication  
{
namespace Presentation  
{
// khai báo lp  
// khai báo vùng tên con  
}
namespace Bussiness  
{
// khai báo lp  
// khai báo vùng tên con  
}
namespace Data  
{
// khai báo lp  
// khai báo vùng tên con  
}
}
Cách 2  
namespace MyApplication.Presentation  
{
// khai báo lp  
// khai báo vùng tên con  
}
namespace MyApplication.Bussiness  
{
// khai báo lp  
// khai báo vùng tên con  
}
namespace MyApplication.Data  
{
// khai báo lp  
// khai báo vùng tên con  
}
Cách khai báo vùng tên thnht chtin nếu các vùng tên nm trên cùng mt tp  
tin. Cách thhai tin li hơn khi các vùng tên nm trên nhiu tp tin khác nhau.  
3.8 Chthtin xlý  
Không phi mi câu lnh đều được biên dch cùng lúc mà có mt strong chúng  
được biên dch trước mt skhác. Các câu lnh như thế này gi là các chthtin  
x. Các chthtin xđược đặt sau du #.  
3.8.1 Định nghĩa các định danh  
#define DEBUG định nghĩa mt định danh tin x(preprocessor identifier)  
DEBUG. Mc dù các chthtin xlý có thể định nghĩa ở đâu tuthích nhưng định  
danh tin xlý bt buc phi định nghĩa ở đầu ca chương trình, trước ctkhóa  
using. Do đó, ta cn trình bày như sau:  
#define DEBUG  
//... mã ngun bình thường - không nh hưởng bi btin xlý  
22  

Tải về để xem bản đầy đủ

pdf 281 trang yennguyen 16/01/2025 80
Bạn đang xem 30 trang mẫu của tài liệu "Đồ án Tìm hiểu ngôn ngữ C# và viết một ứng dụng minh họa", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • pdfdo_an_tim_hieu_ngon_ngu_c_va_viet_mot_ung_dung_minh_hoa.pdf