trờng đại học s phạm kỹ thuật hng yên
Khoa công nghệ thông tin
đề cơng bài giảng
Môn: Cơ sở kỹ thuật lập trình với C#
BMCNPM
2
Contents
Bài 1: Tổng quan về ngôn ngữ lập trình C# 5
1.1 Tổng quan về ngôn ngữ lập trình C# 5
1.2. Cấu trúc một chơng trình C# đơn giản 11
BàI 2: CáC KHáI NIệM CƠ BảN Và MÔI TRƯờNG PHáT TRIểN 12
2.1. Một số khái niệm cơ bản 12
2.2. Visual C# 2005 Express Edition 17
2.2.1. To mt ng dng Console 17
2.2.2. Lu mt ng dng C# 18
2.2.3. Thờm mt tp tin .cs 18
BàI 3: CáC THàNH PHầN CƠ BảN TRONG NGễN NGữ C# 20
3.1. Các phần tử cơ bản của một ngôn ngữ lập trình 20
3.1.1. Bng ch cỏi 20
3.1.2. T khúa 20
3.1.3. Tờn (ủnh danh) 20
3.2. Các kiểu dữ liệu cơ bản 21
3.2.1. Kiu nguyờn 22
3.2.2. Kiu thc 23
3.2.3. Kiu ký t 24
3.2.4. Kiu logic 24
3.2.5. Kiu xõu(chui) 25
3.3. Biến, hằng và cách khai báo 25
3.3.1. Bin 25
3.3.2. Hng 26
3.4. Các phép toán 29
3.4.1. Phộp toỏn s hc 29
3.4.2. Phộp toỏn quan h 30
3.4.3. Phộp toỏn logic 30
3.4.4. Phộp toỏn tng gim 31
3.4.5. Th t u tiờn cỏc phộp toỏn 31
3.5. Biểu thức 33
3.5.1. Biu thc s hc 33
3.5.2. Biu thc logic 33
3.5.3. Biu thc ủiu kin 33
3.5.4. Biu thc gỏn 34
3.5.5. Biu thc ộp kiu 35
BàI 4 : MộT Số HàM CHứC NĂNG THƯờNG DùNG TRONG CHƯƠNG 36
4.1. Một số hàm thờng dùng 36
BMCNPM
3
4.2. Nhập/xuất dữ liệu 37
4.2.1. a d liu ra mn hỡnh 37
4.2.2. Nhp d liu vo t bn phớm 38
BàI 5: BàI THựC HàNH Về CáC THàNH PHầN CƠ BảN 40
BàI 6: CấU TRúC Rẽ NHáNH 40
6.1. Khối lệnh 40
6.2. Các cấu trúc rẽ nhánh 41
6.2.1. Cu trỳc r nhỏnh if 41
6.2.2. Cu trỳc r nhỏnh switch 45
Bài 7: BàI THựC HàNH Về CấU TRúC Rẽ NHáNH 48
BàI 8: CấU TRúC LặP WHILE, DOWHILE 48
8.1. Cấu trúc lặp while 48
8.2. Cấu trúc lặp do while 49
BàI 9: CấU TRúC LặP FOR Và MộT Số LệNH ĐIềU KHIểN KHáC 52
9.1. Cấu trúc lặp for 52
9.2. Toán tử break và continue 56
9.2.1. Cõu lnh break 56
9.2.2. Cõu lnh continue 57
BàI 11: CHƯƠNG TRìNH CON 59
11.1. Đặt vấn đề 59
11.2. Ví dụ một chơng trình có sử dụng hàm 59
11.3. Phạm vi hoạt động của biến 60
11.4. Cấu trúc một hàm 65
4.6 Nguyên tắc hoạt động của hàm và cách truyền tham số cho hàm 66
4.7. Định nghĩa chồng hàm 69
4.8. Cách gọi hàm 70
BàI 14: KHáI NIệM Về MảNG, MảNG MộT CHIềU 72
14.1. Kiểu dữ liệu giá trị và kiểu dữ liệu tham chiếu 72
14.2. Khái niệm 73
14.3. Mảng một chiều 73
14.3.1. Khai bỏo v to mng 73
14.3.2. Truy nhp vo cỏc phn t ca mng: 77
14.3.3. Cỏc thao tỏc trờn mng 77
14.3.4. Vớ d ỏp dng 77
BàI 16: MảNG ĐA CHIềU 88
16.1. Mảng đa chiều cùng kích thớc 88
16.1.1. Khai bỏo v to mng 88
16.1.2. Cỏch truy xut cỏc phn t mng 89
16.1.3. Cỏc thao tỏc trờn mng 89
16.1.4. Vớ d ỏp dng 91
BMCNPM
4
16.2. Mảng đa chiều không cùng kích thớc 97
BàI 19 : KIểU Dữ LIệU XÂU Có NộI DUNG Cố ĐịNH (STRING) 100
19.1. Khai báo và sử dụng 101
19.2. Các bài toán xử lý trên String 105
BàI 20 : KIểU Dữ LIệU XÂU VớI NộI DUNG THAY ĐổI ĐƯợC 116
20.1. Khai báo và sử dụng 116
20.2. Các bài toán xử lý trên StringBuilder 117
BàI 22: KIểU Dữ LIệU Có CấU TRúC 122
22.1. Khái niệm về cấu trúc 122
22.2. Khai báo cấu trúc 122
22.3. Các truy xuất các thành phần của cấu trúc 123
22.4. Ví dụ áp dụng 123
BàI 23: KIểU Dữ LIệU LIệT KÊ & TậP HợP 127
23.1. Tập hợp và danh sách liên kết 127
BàI 25: Hệ THốNG NHậP XUấT THƯờNG DùNG TRONG C# 128
25.1. Giới thiệu về hệ thống nhập xuất của C# 128
25.2. Các lớp nhập xuất tập tin 129
BàI 26: NHậP XUấT VớI TệP TIN VĂN BảN 130
26.1. Sử dụng các lớp nhập xuất tệp tin văn bản 130
BMCNPM
5
Đề cơng cơ sở kỹ thuật lập trình
Bài 1: Tổng quan về ngôn ngữ lập trình C#
1.1 Tổng quan về ngôn ngữ lập trình C#
Ngụn ng C# khỏ ủn gin, ch khong 80 t khúa v hn mi my kiu
d liu ủc xõy dng sn. Tuy nhiờn, ngụn ng C# cú ý ngha cao khi nú thc
thi nhng khỏi nim lp trỡnh hin ủi. C# bao gm tt c nhng h tr cho cu
trỳc, thnh phn component, lp trỡnh hng ủi tng. Nhng tớnh cht ủú hin
din trong mt ngụn ng lp trỡnh hin ủi v ủc phỏt trin bi Microsoft, l
phn khi ủu cho k hoch .NET ca h. Tờn ca ngụn ng bao gm ký t
thng theo Microsoft nhng theo ECMA l C#, ch bao gm du s thng.
Microsoft phỏt trin C# da trờn C++ v Java. C# ủc miờu t l ngụn ng cú
ủc s cõn bng gia C++, Visual Basic, Delphi
v Java.
C# theo mt hng no ủú l ngụn ng lp trỡnh phn ỏnh trc tip nht
ủn .NET Framework m tt c cỏc chng trỡnh .NET chy, v nú ph thuc
mnh m vo Framework ny. Cỏc loi d liu c s l nhng ủi tng, hay
ủc gi l garbage-collected, v nhiu kiu tru tng khỏc chng hn nh
class, delegate, interface, exception, v.v, phn ỏnh rừ rng nhng ủc trng ca
.NET runtime.
So sỏnh vi C v C++, ngụn ng ny b gii hn v ủc nõng cao mt
vi ủc ủim no ủú, nhng khụng bao gm cỏc gii hn sau ủõy:
Cỏc con tr ch cú th ủc s dng trong ch ủ khụng an ton. Hu ht
cỏc ủi tng ủc tham chiu an ton, v cỏc phộp tớnh ủu ủc kim tra trn
b ủm. Cỏc con tr ch ủc s dng ủ gi cỏc loi kiu giỏ tr; cũn nhng ủi
tng thuc b thu rỏc (garbage-collector) thỡ ch ủc gi bng cỏch tham
chiu.
+ Cỏc ủi tng khụng th ủc gii phúng tng minh.
+ Ch cú ủn k tha, nhng cú th ci ủt nhiu interface tru tng
(abstract interfaces). Chc nng ny lm ủn gin húa s thc thi ca thi gian
thc thi.
+ C# thỡ an-ton-kiu (typesafe) hn C++.
+ Cỳ phỏp khai bỏo mng khỏc nhau("int[] a = new int[5]" thay vỡ "int
a[5]").
+ Kiu th t ủc thay th bng tờn min khụng gian (namespace).
+ C# khụng cú tiờu bn.
BMCNPM
6
+ Có thêm Properties, các phương pháp có thể gọi các Properties ñể truy
cập dữ liệu.
+ Có reflection.
Tại sao phải sử dụng ngôn ngữ C#
Nhiều người tin rằng không cần thiết có một ngôn ngữ lập trình mới. Java,
C++, Perl, Microsoft Visual Basic, và những ngôn ngữ khác ñược nghĩ rằng ñã
cung cấp tất cả những chức năng cần thiết.
Ngôn ngữ C# là một ngôn ngữ ñược dẫn xuất từ C và C++, nhưng nó
ñược tạo từ nền tảng phát triển hơn. Microsoft bắt ñầu với công việc trong C và
C++ và thêm vào những ñặc tính mới ñể làm cho ngôn ngữ này dễ sử dụng hơn.
Nhiều trong số những ñặc tính này khá giống với những ñặc tính có trong ngôn
ngữ Java. Không dừng lại ở ñó, Microsoft ñưa ra một số mục ñích khi xây dựng
ngôn ngữ này. Những mục ñích này ñược ñược tóm tắt như sau:
- C# là ngôn ngữ ñơn giản
- C# là ngôn ngữ hiện ñại
- C# là ngôn ngữ hướng ñối tượng
- C# là ngôn ngữ mạnh mẽ và mềm dẻo
- C# là ngôn ngữ có ít từ khóa
- C# là ngôn ngữ hướng module
- C# sẽ trở nên phổ biến
C# là ngôn ngữ ñơn giản
C# loại bỏ một vài sự phức tạp và rối rắm của những ngôn ngữ như Java
và C++, bao gồm việc loại bỏ những macro, những template, ña kế thừa, và lớp
cơ sở ảo (virtual base class).
Chúng là những nguyên nhân gây ra sự nhầm lẫn hay dẫn ñến những vấn
ñề cho các người phát triển C++. Nếu chúng ta là người học ngôn ngữ này ñầu
tiên thì chắc chắn là ta sẽ không trải qua những thời gian ñể học nó! Nhưng khi
ñó ta sẽ không biết ñược hiệu quả của ngôn ngữ C# khi loại bỏ những vấn ñề
trên.
Ngôn ngữ C# ñơn giản vì nó dựa trên nền tảng C và C++. Nếu chúng ta
thân thiện với C và C++ hoậc thậm chí là Java, chúng ta sẽ thấy C# khá giống về
diện mạo, cú pháp, biểu thức, toán tử và những chức năng khác ñược lấy trực
tiếp từ ngôn ngữ C và C++, nhưng nó ñã ñược cải tiến ñể làm cho ngôn ngữ ñơn
giản hơn. Một vài trong các sự cải tiến là loại bỏ các dư thừa, hay là thêm vào
những cú pháp thay ñổi. Ví dụ như, trong C++ có ba toán tử làm việc với các
thành viên là ::, . , và ->. ðể biết khi nào dùng ba toán tử này cũng phức tạp và
BMCNPM
7
dễ nhầm lẫn. Trong C#, chúng ñược thay thế với một toán tử duy nhất gọi là .
(dot). ðối với người mới học thì ñiều này và những việc cải tiến khác làm bớt
nhầm lẫn và ñơn giản hơn.
Ghi chú: Nếu chúng ta ñã sử dụng Java và tin rằng nó ñơn giản, thì
chúng ta cũng sẽ tìm thấy rằng C# cũng ñơn giản. Hầu hết mọi người ñều không
tin rằng Java là ngôn ngữ ñơn giản. Tuy nhiên, C# thì dễ hơn là Java và C++.
C# là ngôn ngữ hiện ñại
ðiều gì làm cho một ngôn ngữ hiện ñại? Những ñặc tính như là xử lý
ngoại lệ, thu gom bộ nhớ tự ñộng, những kiểu dữ liệu mở rộng, và bảo mật mã
nguồn là những ñặc tính ñược mong ñợi trong một ngôn ngữ hiện ñại. C# chứa
tất cả những ñặc tính trên. Nếu là người mới học lập trình có thể chúng ta sẽ cảm
thấy những ñặc tính trên phức tạp và khó hiểu. Tuy nhiên, cũng ñừng lo lắng
chúng ta sẽ dần dần ñược tìm hiểu những ñặc tính qua các chương trong cuốn
sách này.
Ghi chú: Con trỏ ñược tích hợp vào ngôn ngữ C++. Chúng cũng là
nguyên nhân gây ra những rắc rối của ngôn ngữ này. C# loại bỏ những phức tạp
và rắc rối phát sinh bởi con trỏ. Trong C#, bộ thu gom bộ nhớ tự ñộng và kiểu
dữ liệu an toàn ñược tích hợp vào ngôn ngữ, sẽ loại bỏ những vấn ñề rắc rối của
C++.
C# là ngôn ngữ hướng ñối tượng
Những ñặc ñiểm chính của ngôn ngữ hướng ñối tượng (Object-oriented
language) là sự ñóng gói (encapsulation), sự kế thừa (inheritance), và ña hình
(polymorphism). C# hỗ trợ tất cả những ñặc tính trên. Phần hướng ñối tượng của
C# sẽ ñược trình bày chi tiết trong một chương riêng ở phần sau.
C# là ngôn ngữ mạnh mẽ và cũng mềm dẻo
Như ñã ñề cập trước, với ngôn ngữ C# chúng ta chỉ bị giới hạn ở chính
bởi bản thân hay là trí tưởng tượng của chúng ta. Ngôn ngữ này không ñặt
những ràng buộc lên những việc có thể làm. C# ñược sử dụng cho nhiều các dự
án khác nhau như là tạo ra ứng dụng xử lý văn bản, ứng dụng ñồ họa, bản tính,
hay thậm chí những trình biên dịch cho các ngôn ngữ khác.
C# là ngôn ngữ ít từ khóa
C# là ngôn ngữ sử dụng giới hạn những từ khóa. Phần lớn các từ khóa
ñược sử dụng ñể mô tả thông tin. Chúng ta có thể nghĩ rằng một ngôn ngữ có
nhiều từ khóa thì sẽ mạnh hơn. ðiều này không phải sự thật, ít nhất là trong
trường hợp ngôn ngữ C#, chúng ta có thể tìm thấy rằng ngôn ngữ này có thể
BMCNPM
8
ñược sử dụng ñể làm bất cứ nhiệm vụ nào. Bảng sau liệt kê các từ khóa của
ngôn ngữ C#.
C# là ngôn ngữ hướng module
Mã nguồn C# có thể ñược viết trong những phần ñược gọi là những lớp,
những lớp này chứa các phương thức thành viên của nó. Những lớp và những
phương thức có thể ñược sử dụng lại trong ứng dụng hay các chương trình khác.
Bằng cách truyền các mẫu thông tin ñến những lớp hay phương thức chúng ta có
thể tạo ra những mã nguồn dùng lại có hiệu quả.
C# sẽ là một ngôn ngữ phổ biến
C# là một trong những ngôn ngữ lập trình mới nhất. Vào thời ñiểm cuốn
sách này ñược viết, nó không ñược biết như là một ngôn ngữ phổ biến. Nhưng
ngôn ngữ này có một số lý do ñể trở thành một ngôn ngữ phổ biến. Một trong
những lý do chính là Microsoft và sự cam kết của .NET Microsoft muốn ngôn
ngữ C# trở nên phổ biến. Mặc dù một công ty không thể làm một sản phẩm trở
nên phổ biến, nhưng nó có thể hỗ trợ. Cách ñây không lâu, Microsoft ñã gặp sự
thất bại về hệ ñiều hành Microsoft Bob. Mặc dù Microsoft muốn Bob trở nên
phổ biến nhưng thất bại. C# thay thế tốt hơn ñể ñem ñến thành công sơ với Bob.
Thật sự là không biết khi nào mọi người trong công ty Microsoft sử dụng Bob
trong công việc hằng ngày của họ. Tuy nhên, với C# thì khác, nó ñược sử dụng
bởi Microsoft. Nhiều sản phẩm của công ty này ñã chuyển ñổi và viết lại bằng
BMCNPM
9
C#. Bằng cách sử dụng ngôn ngữ này Microsoft ñã xác nhận khả năng của C#
cần thiết cho những người lập trình.
Micorosoft .NET là một lý do khác ñể ñem ñến sự thành công của C#.
.NET là một sự thay ñổi trong cách tạo và thực thi những ứng dụng. Ngoài hai lý
do trên ngôn ngữ C# cũng sẽ trở nên phổ biến do những ñặc tính của ngôn
ngữ này ñược ñề cập trong mục trước như: ñơn giản, hướng ñối tượng, mạnh
mẽ
Ngôn ngữ C# và những ngôn ngữ khác
Chúng ta ñã từng nghe ñến những ngôn ngữ khác như Visual Basic, C++
và Java. Có lẽ chúng ta cũng tự hỏi sự khác nhau giữa ngôn ngữ C# và nhưng
ngôn ngữ ñó. Và cũng tự hỏi tại sao lại chọn ngôn ngữ này ñể học mà không
chọn một trong những ngôn ngữ kia. Có rất nhiều lý do và chúng ta hãy xem
một số sự so sánh giữa ngôn ngữ C# với những ngôn ngữ khác giúp chúng ta
phần nào trả lời ñược những thắc mắc. Microsoft nói rằng C# mang ñến sức
mạnh của ngôn ngữ C++ với sự dễ dàng của ngôn ngữ Visual Basic. Có thể nó
không dễ như Visual Basic, nhưng với phiên bản Visual Basic.NET (Version 7)
thì ngang nhau. Bởi vì chúng ñược viết lại từ một nền tảng. Chúng ta có thể viết
nhiều chương trình với ít mã nguồn hơn nếu dùng C#.
Mặc dù C# loại bỏ một vài các ñặc tính của C++, nhưng bù lại nó tránh ñược
những lỗi mà thường gặp trong ngôn ngữ C++. ðiều này có thể tiết kiệm ñược
hàng giờ hay thậm chí hàng ngày trong việc hoàn tất một chương trình. Chúng ta
sẽ hiểu nhiều về ñiều này trong các chương của giáo trình.
Một ñiều quan trọng khác với C++ là mã nguồn C# không ñòi hỏi phải có
tập tin header. Tất cả mã nguồn ñược viết trong khai báo một lớp.
Như ñã nói ở bên trên .NET runtime trong C# thực hiện việc thu gom bộ
nhớ tự ñộng. Do ñiều này nên việc sử dụng con trỏ trong C# ít quan trọng hơn
trong C++. Những con trỏ cũng có thể ñược sử dụng trong C#, khi ñó những
ñoạn mã nguồn này sẽ ñược ñánh dấu là không an toàn (unsafe code).
C# cũng từ bỏ ý tưởng ña kế thừa như trong C++. Và sự khác nhau khác
là C# ñưa thêm thuộc tính vào trong một lớp giống như trong Visual Basic. Và
những thành viên của lớp ñược gọi duy nhất bằng toán tử “.” khác với C++ có
nhiều cách gọi trong các tình huống khác nhau.
Một ngôn ngữ khác rất mạnh và phổ biến là Java, giống như C++ và C#
ñược phát triển dựa trên C. Nếu chúng ta quyết ñịnh sẽ học Java sau này, chúng
ta sẽ tìm ñược nhiều cái mà học từ C# có thể ñược áp dụng.
BMCNPM
10
ðiểm giống nhau C# và Java là cả hai cùng biên dịch ra mã trung gian: C#
biên dịch ra MSIL còn Java biên dịch ra bytecode. Sau ñó chúng ñược thực hiện
bằng cách thông dịch hoặc biên dịch just-in-time trong từng máy ảo tương ứng.
Tuy nhiên, trong ngôn ngữ C# nhiều hỗ trợ ñược ñưa ra ñể biên dịch mã
ngôn ngữ trung gian sang mã máy. C# chứa nhiều kiểu dữ liệu cơ bản hơn Java
và cũng cho phép nhiều sự mở rộng với kiểu dữ liệu giá trị. Ví dụ, ngôn ngữ C#
hỗ trợ kiểu liệt kệ (enumerator), kiểu này ñược giới hạn ñến một tập hằng ñược
ñịnh nghĩa trước, và kiểu dữ liệu cấu trúc ñây là kiểu dữ liệu giá trị do người
dùng ñịnh nghĩa. Chúng ta sẽ ñược tìm hiểu kỹ hơn về kiểu dữ liệu tham chiếu
và kiểu dữ liệu giá trị sẽ ñược trình bày trong phần sau
Tương tự như Java, C# cũng từ bỏ tính ña kế thừa trong một lớp, tuy
nhiên mô hình kế thừa ñơn này ñược mở rộng bởi tính ña kế thừa nhiều giao
diện.
Các bước chuẩn bị cho chương trình
Thông thường, trong việc phát triển phần mềm, người phát triển phải tuân
thủ theo quy trình phát triển phần mềm một cách nghiêm ngặt và quy trình này
ñã ñược chuẩn hóa. Tuy nhiên trong phạm vi của chúng ta là tìm hiểu một ngôn
ngữ mới và viết những chương trình nhỏ thì không ñòi hỏi khắt khe việc thực
hiện theo quy trình. Nhưng ñể giải quyết ñược những vấn ñề thì chúng ta cũng
cần phải thực hiện ñúng theo các bước sau. ðầu tiên là phải xác ñịnh vấn ñề cần
giải quyết. Nếu không biết rõ vấn ñề thì ta không thể tìm ñược phương pháp giải
quyết. Sau khi xác ñịnh ñược vấn ñề, thì chúng ta có thể nghĩ ra các kế hoạch ñể
thực hiện. Sau khi có một kế hoạch, thì có thể thực thi kế hoạch này. Sau khi kế
hoạch ñược thực thi, chúng ta phải kiểm tra lại kết quả ñể xem vấn ñề ñược giải
quyết xong chưa. Logic này thường ñược áp dụng trong nhiều lĩnh vực khác
nhau, trong ñó có lập trình.
Khi tạo một chương trình trong C# hay bất cứ ngôn ngữ nào, chúng ta nên
theo những bước tuần tự sau:
- Xác ñịnh mục tiêu của chương trình.
- Xác ñịnh những phương pháp giải quyết vấn ñề.
- Tạo một chương trình ñể giải quyết vấn ñề.
- Thực thi chương trình ñể xem kết quả.
Ví dụ mục tiêu ñể viết chương trình xử lý văn bản ñơn giản, mục tiêu
chính là xây dựng chương trình cho phép soạn thảo và lưu trữ những chuỗi ký tự
hay văn bản. Nếu không có mục tiêu thì không thể viết ñược chương trình hiệu
quả.
BMCNPM
11
Bước thứ hai là quyết ñịnh ñến phương pháp ñể viết chương trình. Bước
này xác ñịnhn những thông tin nào cần thiết ñược sử dụng trong chương trình,
các hình thức nào ñược sử dụng. Từ những thông tin này chúng ta rút ra ñược
phương pháp ñể giải quyết vấn ñề.
Bước thứ ba là bước cài ñặt, ở bước này có thể dùng các ngôn ngữ khác
nhau ñể cài ñặt, tuy nhiên, ngôn ngữ phù hợp ñể giải quyết vấn ñề một cách tốt
nhất sẽ ñược chọn. Trong phạm vi của sách này chúng ta mặc ñịnh là dùng C#,
ñơn giản là chúng ta ñang tìm hiểu nó!
Và bước cuối cùng là phần thực thi chương trình ñể xem kết quả.
1.2. CÊu tróc mét ch−¬ng tr×nh C# ®¬n gi¶n
Từ ví dụ trên ta nhận thấy rằng một chương trình C# ñơn giản có ít nhất
là một lớp. Mỗi lớp ñược bắt ñầu bằng từ khoá class kế ñó là tên lớp( tên lớp do
chúng ta ñặt và phải tuân thủ theo nguyên tắc ñặt tên, bên trong một lớp ta có
thể khai báo các biến(thành phần dữ liệu) và các hàm(phương thức)). Trong số
các hàm bên trong lớp có một hàm tên là Main, hàm này có ñặc ñiểm khi một
chương trình C# ñược gọi ra thực hiện thì máy sẽ tiến hành thực hiện từ câu lệnh
ñầu tiên của hàm Main và khi màn Main kết thúc thì chương trình C# cũng kết
thúc. ðiều ñó chứng tỏ hàm Main là hàm chính của chương trình C#. Một
chương trình C# muốn thực hiện ñược thì phải có một hàm Main và chỉ có duy
nhất một hàm Main trong toàn bộ hệ thống chương trình và hàm này sẽ gọi các
hàm khác ra ñể thực hiện yêu cầu bài toán. Hàm Main ñược khai báo như sau:
Dạng 1:
(Không có tham số)
static void Main( )
{
// Các câu lệnh
}
Dạng 2: (Có tham số)
static void Main(string[] tên_biến)
{
// Các câu lệnh
}
BMCNPM
12
Chỳ ý: Nu trong mt chng trỡnh C# m khụng cú hm Main ủt trong mt
lp no ủú thỡ chng trỡnh C# ny khụng th thc hin ủc.
Ví dụ mở đầu
bt ủu cho vic tỡm hiu ngụn ng C# v to tin ủ cho cỏc chng
sau, chng ủu tiờn trỡnh by mt chng trỡnh C# ủn gin nht.
Vớ d : Chng trỡnh C# ủu tiờn.
class ChaoMung
{
static void Main( )
{
// Xuat ra man hinh
System.Console.WriteLine(Hello World);
}
}
Kt qu:
Hello World
Sau khi vit xong chỳng ta lu di dng tp tin cú phn m rng *.cs
(C sharp). Sau ủú biờn dch v chy chng trỡnh. Kt qu l mt chui Hello
World s xut hin trong mn hỡnh Console.
BàI 2: CáC KHáI NIệM CƠ BảN Và MÔI TRƯờNG PHáT TRIểN
2.1. Một số khái niệm cơ bản
Ghi chỳ: Mt chng trỡnh ủc vit tt thỡ cn phi cú chỳ thớch cỏc ủon
mó ủc vit. Cỏc ủon chỳ thớch ny s khụng ủc biờn dch v cng khụng
tham gia vo chng trỡnh. Mc ủớch chớnh l lm cho ủon mó ngun rừ rng
v d hiu.
Trong vớ d mc 1.2 cú mt dũng chỳ thớch :
// Xuat ra man hinh.
Mt chui chỳ thớch trờn mt dũng thỡ bt ủu bng ký t //. Khi trỡnh
biờn dch gp hai ký t ny thỡ s b qua dũng ủú.
BMCNPM
13
Ngoài ra C# còn cho phép kiểu chú thích cho một hay nhiều dòng, và ta
phải khai báo “/*” ở phần ñầu chú thích và kết thúc chú thích là ký tự “*/”.
Ví dụ 1 : Minh họa dùng chú thích trên nhiều dòng.
class ChaoMung
{
static void Main()
{
/* Xuat ra man hinh chuoi ‘Hello World’
Su dung ham WriteLine cua lop System.Console
*/
System.Console.WriteLine(“Hello World”);
}
}
Kết quả:
Hellp World
Ngoài hai kiểu chú thích trên giống trong C/C++ thì C# còn hỗ trợ thêm
kiểu thứ ba cũng là kiểu cuối cùng, kiểu này chứa các ñịnh dạng XML nhằm
xuất ra tập tin XML khi biên dịch ñể tạo sưu liệu cho mã nguồn.
///XML Chú thích tài liệu 1 dòng ñịnh dạng theo XML
/**XML Chú thích nhiều dòng ñịnh dạng theo XML**/
Ứng dụng Console: Là cách xây dựng ứng dụng giao tiếp với người dùng
thông quan bàn phím và không có giao diện người dùng (UI), giống như các
ứng dụng thường thấy trong Windows. Trong các chương xây dựng các ứng
dụng nâng cao trên Windows hay Web thì ta mới dùng các các giao diện ñồ
họa. Còn ñể tìm hiểu về ngôn ngữ C# thuần tuý thì cách tốt nhất là ta viết các
ứng dụng Console.
Trong hai ứng dụng ñơn giản trên ta ñã dùng phương thức WriteLine()
của lớp Console. Phương thức này sẽ xuất ra màn hình dòng lệnh hay màn hình
DOS chuỗi tham số ñưa vào, cụ thể là chuỗi “Hello World”.
BMCNPM
14
namespase: Không gian tên giúp sắp xếp các lớp và hạn chế xung ñột tên,
trong một namespase có thể chứa các subnamespase và các lớp.
ví dụ 2: namespase và subnamespase
// trong namespase System có subnamespase Text và có lớp Console.
using System;
using System.Text;
namespace CSKTLT
{
class Program
{
static void Main(string[] args)
{
byte[] mb = new byte[2];
mb[0] = 65;
mb[1] = 66;
Console.WriteLine (Encoding.UTF8.GetString(mb));
//Lớp Encoding thuộc namespase System.Text
}
}
}
Kết quả:
AB
Từ khóa using: ðể khai báo sử dụng một namespace và ñược viết ở ñầu
chương trình trước từ khóa khai báo lớp class. ðể làm cho chương trình gọn
hơn, và không cần phải viết từng namespace cho từng ñối tượng, C# cung cấp từ
khóa là using, sau từ khóa này là một namespace hay subnamespace với mô tả
ñầy ñủ trong cấu trúc phân cấp của nó.
Cách khai báo:
using ten_NameSpace.SubNameSpace…. SubNameSpace;
BMCNPM
15
- Ta có thể khai báo sử dụng namespase System như sau:
using System;
Khi ñó trong chương trình nếu chúng ta có dùng ñối tượng Console thì
không cần phải viết ñầy ñủ : System.Console. Mà chỉ cần viết Console.
Ví dụ 3 Dùng khóa using
using System;
class DauTien
{
static void Main()
{
/* Sử dụng từ khóa using khai báo sử dụng namespase System. Khi sử
dụng ñối tượng Console không cần phải viết ñầy ñủ System.Console
*/
Console.WriteLine(“Chao cac ban”);
}
}
Kết quả:
Chao cac ban
Ví dụ 4: Vì Console là một lớp(ñối tượng)không phải là một namespase nên câu
lệnh khai báo sau là không lệ.
using System.Console; // Không hợp lệ
class ChaoMung
{
static void Main()
{
//Xuat ra man hinh chuoi thong bao
WriteLine(“Hello World”);
}
}
BMCNPM
16
Kết quả:
ðoạn chương trình trên khi biên dịch sẽ ñược thông báo một lỗi như sau:
error CS0138: A using namespace directive can only be applied to namespace;
‘System.Console’ is a class not a namespace.
Cách biểu diễn namespace có thể làm giảm nhiều thao tác gõ bàn phím, nhưng
nó có thể sẽ không ñem lại lợi ích nào bởi vì nó có thể làm xáo trộn những
namespace có tên không khác nhau. Giải pháp chung là chúng ta sử dụng từ
khóa using với các namespace ñã ñược xây dựng sẵn, các namespace do chúng
ta tạo ra, những namespace này chúng ta ñã nắm chắc các thành phần về nó. Còn
ñối với namespace do các hãng thứ ba cung cấp thì chúng ta không nên dùng
từ khóa using.
- Ngoài ra ta còn có thể khai báo sử dụng một lớp của một namespace nào ñó
bằng từ khóa using theo cú pháp như sau:
using Ten_Tu_Dat=TenNameSpace.[TenSubNameSpace.]TenLop;
Khi ñó khi sử dụng lớp thay vì gọi tên lớp ta có thể gọi tên tự ñặt (Ten_Tu_Dat).
Ví dụ 5:
using Viet = System.Console;
namespace GiaThuaKep
{
class Program
{
static void Main(string[] args)
{
// Thay vi sử dụng System.Console ta sử dụng Viet
Viet.WriteLine("Nhap vao so can tinh n!!");
int n = int.Parse(Viet.ReadLine());
Viet.WriteLine("So vua nhap la {0}", n);
Viet.ReadLine();
}
}
}
Dấu chấm phẩy(;) : Trong C# quy ước kết thúc mỗi câu lệnh ta phải dùng
dấu chấm phẩy( ;)
BMCNPM
17
2.2. Visual C# 2005 Express Edition
2.2.1. Tạo một ứng dụng Console
ðể tạo chương trình chào mừng trong IDE, lựa chọn mục Visual Studio
.NET trong menu Start hoặc icon của nó trên desktop, sau khi khởi ñộng xong
chương trình, chọn tiếp Menu FileNew Project. Chức năng này sẽ gọi cửa
sổ New Project (
Hình
1.5.1-1 bên dưới). Nếu như chương trình Visual Studio
.NET ñược chạy lần ñầu tiên, khi ñó cửa sổ New Project sẽ xuất hiện tự ñộng mà
không cần phải kích hoạt.
Lưu ý rằng Visual Studio .NET tạo ra một namespace dựa trên tên của
project mà ta vừa cung cấp (DauTay), và thêm vào chỉ dẫn sử dụng namespace
System bằng lệnh using, bởi hầu như mọi chương trình mà chúng ta viết ñều cần
sử dụng các kiểu dữ liệu chứa trong namespace System.
.
Sau khi nhấn OK thì của sổ soạn thảo (code) ñược hiể thị ra như (hình
3.2.2 bên dưới)
1. Chọn ngôn ngữ C#
2. Chọn loại ứng dụng
Consle
3. Chọn thư mục
lưu
ứng dụng.
4. ðặt tên cho
ứng dụng.
5. Hoàn thành
tạo ứng dụng
Hình 2.2. - 1: Tạo ứng dụng kiểu Console
BMCNPM
18
Visual Studio .NET tạo một lớp tên là Program, lớp này chúng ta có thể tùy
ý ñổi tên của chúng. Khi ñổi tên của lớp, tốt nhất là ñổi tên luôn tập tin chứa lớp
ñó (Program.cs). Giả sử trong ví dụ trên chúng ta ñổi tên của lớp thành
LopChay, và ñổi tên tập tin Program.cs (ñổi tên tập tin trong cửa sổ Solution
Explorer, nhấn chuột phải nên tệp tin cần ñổi tên và chọn Rename).
Chúng ta có thể xóa tất cả các câu lệnh mà chương trình tạo cho chúng ta và
viết code của ứng dụng theo ý muốn (miễn là ñúng cấu trúc)
2.2.2. Lưu một ứng dụng C#
Trong một ứng dụng ta có thể tạo ra nhiều tệp tin *.cs. Ta có thể lưu sự
thay ñổi của một tệp hoặc của tất cả các tệp tin (Save và Save All).
2.2.3. Thêm một tệp tin .cs
ðể thêm một tệp tin .cs vào dự án : Vào Project Add Class (Shift + Alt + C)
2.2.1. Dịch và chạy một ứng dụng
+ Nhấn F5 : Chạy chương trình có Debug
+ Nhấn Ctr + F5: Chạy chương trình không có Debug
Hình 2.2. -2: Cửa sổ soạn thảo code
Nhấn vào nút này lưu
thông tin của tệp hiện
hành
lên ñ
ĩa (Ctrl + S)
Nh
ấn v
ào nút này ñ
ể
lưu thông tin của tất
cả các tệp lên ñĩa
(Ctrl + Shift + S)
BMCNPM
19
+ Nhấn F6: Dịch chương trình
BMCNPM
20
BàI 3: CáC THàNH PHầN CƠ BảN TRONG NGễN NGữ C#
3.1. Các phần tử cơ bản của một ngôn ngữ lập trình
3.1.1. Bng ch cỏi
Mi ngụn ng lp trỡnh ủu ủc xõy dng t mt b ký t no ủú. Cỏc
ký t ủc nhúm li theo nhiu cỏch khỏc nhau ủ lp lờn cỏc t. n lt mỡnh
cỏc t ủc liờn kt theo mt chớnh quy no ủú ủ to thnh cỏc cõu lnh. Mt
chng trỡnh bao gm nhiu cõu lnh v din ủt mt thut toỏn ủ gii mt bi
toỏn no ủú.
Ngụn ng C# ủc xõy dng trờn b ký t sau:
Cỏc ch cỏi hoa: A B C Z
Cỏc ch cỏi thng: a b c z
Cỏc ch s: 0 1 2 9
Cỏc kớ hiu toỏn hc: + - * / = < >
Cỏc du ngoc: [ ] { } ( )
Cỏc ký hiu ủc bit khỏc: , . ; : / ? @ # $ % ^ &
Cỏc du ngn cỏch khụng nhỡn thy nh du cỏch, du nhy cỏch
tab, du xung dũng
Du gch ni di: _
3.1.2. T khúa
L nhng t ủc ngụn ng lp trỡnh s dng vo mt mc ủớch no ủú
nú cú mt ý ngha hon ton xỏc ủnh trong chng trỡnh:
Vớ d: void, struct, class, while,
+ Khụng ủc dựng t khoỏ ủ ủt tờn cho cỏc hng, bin, mng, hm
+ T khoỏ phi vit bng ch thng
Vớ d:
+ T khúa vit ủỳng: void
+ T khúa vit sai: Void
3.1.3. Tờn (ủnh danh)
Tờn gi ca cỏc thnh phn trong chng trỡnh ủc gi l ủnh
danh(Identifier). nh danh ủc s dng ủ xỏc ủnh cỏc thnh phn nh bin ,
kiu, phng thc(method) hay cũn ủc gi l hm, ủi tng, lp
Trong C# ủnh danh l mt dóy cỏc ký t gm cỏc ch cỏi, ch s v mt
s cỏc ký hiu nh: ký t gch di ni cõu _ .
BMCNPM
21
Khi ñặt tên phải tuân thủ theo chính quy:
+ Không chứa dấu cách
+ Không bắt ñầu bằng số
+ Không chứa các ký tự ñặc biệt (như: % ? / + =,…)
+ Không trùng với từ khóa, kiểu dữ liệu
Chú ý: C# phân biệt chữ hoa và chữ thường, ví dụ TONG và tong là hai ñịnh
danh khác nhau. ðộ dài(số ký tự) của ñịnh danh trong C# về mặt lý thuyết là
không giới hạn.
Ví dụ:
+ Các ñịnh danh viết ñúng: tong_le, b1
+ Các ñịnh danh viết sai: 1b, tong le, void, tong*,
ðể trở thành một nhà lập trình chuyên nghiệp, chúng ta nên sử dụng cách ñặt tên
theo một chuẩn nhất ñịnh ñể dễ phân biệt ñược các loại khác nhau của các thành
phần sử dụng. Chúng ta qui ước cách ñặt tên thống nhất như sau:
+ ðịnh danh cho các lớp: chữ cái ñầu của mỗi từ trong ñịnh danh ñều viết
hoa, ví dụ MyClass, HocSinh
+ ðịnh danh cho biến, phương thức, ñối tượng: chữ cái ñầu của mỗi ñịnh
danh ñều ñược viết hoa trừ từ ñầu tiên, ví dụ bienTong, tinhTong,
+ ðịnh danh cho hằng ta viết hoa, ví dụ: MAX, PI
3.2. C¸c kiÓu d÷ liÖu c¬ b¶n
C# là ngôn ngữ lập trình mạnh về kiểu dữ liệu, một ngôn ngữ mạnh về
kiểu dữ liệu là phải khai báo kiểu của mỗi ñối tượng khi tạo (kiểu số nguyên, số
thực, kiểu chuỗi, kiểu ñiều khiển ) và trình biên dịch sẽ giúp cho người lập
trình không bị lỗi khi chỉ cho phép một loại kiểu dữ liệu có thể ñược gán cho các
kiểu dữ liệu khác. Kiểu dữ liệu của một ñối tượng là một tín hiệu ñể trình biên
dịch nhận biết kích thước của một ñối tượng (kiểu int có kích thước là 4 byte) và
khả năng của nó (như một ñối tượng button có thể vẽ, phản ứng khi nhấn, ).
Tương tự như C++ hay Java, C# chia thành hai tập hợp kiểu dữ liệu
chính: Kiểu xây dựng sẵn (built-in) mà ngôn ngữ cung cấp cho người lập trình
và kiểu ñược người dùng ñịnh nghĩa (user-defined) do người lập trình tạo ra.
C# phân tập hợp kiểu dữ liệu này thành hai loại: Kiểu dữ liệu giá trị
(value) và kiểu dữ liệu tham chiếu (reference). Việc phân chi này do sự khác
nhau khi lưu kiểu dữ liệu giá trị và kiểu dữ liệu tham chiếu trong bộ nhớ. ðối
với một kiểu dữ liệu giá trị thì sẽ ñược lưu giữ kích thước thật trong bộ nhớ ñã
BMCNPM
22
cấp phát là stack. Trong khi ñó thì ñịa chỉ của kiểu dữ liệu tham chiếu thì ñược
lưu trong stack nhưng ñối tượng thật sự thì lưu trong bộ nhớ heap.
Nếu chúng ta có một ñối tượng có kích thước rất lớn thì việc lưu giữ
chúng trên bộ nhớ heap rất có ích, trong chương 4 sẽ trình bày những lợi ích và
bất lợi khi làm việc với kiểu dữ liệu tham chiếu, còn trong chương này chỉ tập
trung kiểu dữ kiểu cơ bản hay kiểu xây dựng sẵn.
Ghi chú: Tất cả các kiểu dữ liệu xây dựng sẵn là kiểu dữ liệu giá trị ngoại trừ
các ñối tượng và chuỗi. Và tất cả các kiểu do người dùng ñịnh nghĩa ngoại trừ
kiểu cấu trúc ñều là kiểu dữ liệu tham chiếu
Ngoài ra C# cũng hỗ trợ một kiểu con trỏ C++, nhưng hiếm khi ñược sử
dụng, và chỉ khi nào làm việc với những ñoạn mã lệnh không ñược quản lý
(unmanaged code). Mã lệnh không ñược quản lý là các lệnh ñược viết bên ngoài
nền .MS.NET, như là các ñối tượng COM.
Kiểu dữ liệu xây dựng sẵn: Ngôn ngữ C# ñưa ra các kiểu dữ liệu xây dựng sẵn
rất hữu dụng, phù hợp với một ngôn ngữ lập trình hiện ñại, mỗi kiểu dữ liệu
ñược ánh xạ ñến một kiểu dữ liệu ñược hỗ trợ bởi hệ thống xác nhận ngôn ngữ
chung (Common Language Specification: CLS) trong MS.NET. Việc ánh xạ các
kiểu dữ liệu nguyên thuỷ của C# ñến các kiểu dữ liệu của .NET sẽ ñảm bảo các
ñối tượng ñược tạo ra trong C# có thể ñược sử dụng ñồng thời với các ñối tượng
ñược tạo bởi bất cứ ngôn ngữ khác ñược biên dịch bởi .NET, như VB.NET. Mỗi
kiểu dữ liệu có một sự xác nhận và kích thước không thay ñổi, không giống như
C++, int trong C# luôn có kích thước là 4 byte bởi vì nó ñược ánh xạ từ kiểu
Int32 trong .NET.
Sau ñây chúng ta ñi tìm hiểu chi tiết một sô kiểu dữ liệu dựng sẵn có trong C#:
3.2.1. Kiểu nguyên
Dùng ñể lưu trữ các giá trị nguyên trong giới hạn cho phép tuỳ thuộc vào
từng kiểu dữ liệu nguyên cụ thể. Trong ngôn ngữ C# có một số kiểu dữ liệu
nguyên sau:
Kiểu C#
Số
byte
Kiểu .NET
Mô tả
byte 1 Byte Số nguyên dương không dấu từ 0-255
char 2 Char Ký tự Unicode
sbyte 1 Sbyte Số nguyên có dấu ( từ -128 ñến 127)
short 2 Int16 Số nguyên có dấu giá trị từ -32768 ñến
BMCNPM
23
32767
ushort 2 Uint16 Số nguyên không dấu 0 – 65.535
int 4 Int32 Số nguyên có dấu –2.147.483.647 và
2.147.483.647
uint 4 Uint32 Số nguyên không dấu 0 – 4.294.967.295
long 8 Int64 Kiểu số nguyên có dấu có giá trị trong
khoảng : -9.223.370.036.854.775.808 ñến
9.223.372.036.854.775.807
ulong 8 Uint64 Số nguyên không dấu từ 0 ñến
18,446,744,073,709,551,615
Thông thường ñể chọn một kiểu dữ liệu nguyên ñể sử dụng như short, int
hay long thường dựa vào ñộ lớn của giá trị muốn sử dụng. Ví dụ, một biến
ushort có thể lưu giữ giá trị từ 0 ñến 65.535, trong khi biến ulong có thể lưu giữ
giá trị từ 0 ñến 18,446,744,073,709,551,615, do ñó tùy vào miền giá trị của
phạm vi sử dụng biến mà chọn các kiểu dữ liệu thích hợp nhất. Kiểu dữ liệu int
thường ñược sử dụng nhiều nhất trong lập trình vì với kích thước 4 byte của nó
cũng ñủ ñể lưu các giá trị nguyên cần thiết.
Kiểu số nguyên có dấu thường ñược lựa chọn sử dụng nhiều nhất trong kiểu số
trừ khi có lý do chính ñáng ñể sử dụng kiểu dữ liệu không dấu.
Cách tốt nhất khi sử dụng biến không dấu là giá trị của biến luôn luôn
dương, biến này thường thể hiện một thuộc tính nào ñó có miền giá trị dương.
Ví dụ khi cần khai báo một biến lưu giữ tuổi của một người thì ta dùng kiểu byte
(số nguyên từ 0-255) vì tuổi của người không thể nào âm ñược.
3.2.2. Kiểu thực
Dùng ñể lưu trữ các giá trị thực trong giới hạn cho phép tuỳ thuộc vào từng
kiểu dữ liệu thực cụ thể. Trong ngôn ngữ C# có một số kiểu dữ liệu thực sau:
Kiểu C#
Số
byte
Kiểu .NET
Mô tả
float 4 Single Kiểu dấu chấm ñộng, giá trị xấp xỉ từ
3,4E-38 ñến 3,4E+38, với 7 chữ số có
nghĩa.
double 8 Double Kiểu dấu chấm ñộng có ñộ chính xác gấp
ñôi, giá trị xấp xỉ từ 1,7E-308 ñến
BMCNPM
24
1,7E+308,
với 15,16 chữ số có nghĩa
decimal 8 Decimal Có ñộ chính xác ñến 28 con số và giá trị
thập phân, ñược dùng trong tính toán tài
chính, kiểu này ñòi hỏi phải có hậu tố “m”
hay “M” theo sau giá trị.
Kiểu float, double, và decimal ñưa ra nhiều mức ñộ khác nhau về kích
thước cũng như ñộ chính xác.Với thao tác trên các phân số nhỏ thì kiểu float là
thích hợp nhất. Tuy nhiên lưu ý rằng trình biên dịch luôn luôn hiểu bất cứ một
số thực nào cũng là một số kiểu double trừ khi chúng ta khai báo rõ ràng. ðể gán
một số kiểu float thì số phải có ký tự f theo sau.
float soFloat = 24f;
3.2.3. Kiểu ký tự
Kiểu ký tự ñược thể hiện bằng kiểu char, biểu diễn cho các ký tự mã
Unicode gồm các chữ cái, chữ số và các ký tự ñặc biệt. Kiểu char có 65536(216)
ký tự trong tập mã Unicode 16 bit. Mã của 128 ký tụ ñầu của tập Unicode hoàn
toàn trùng với mã của 128 ký tự trong tập mã ASCII 7-bit và mã của 256 ký tự
ban ñầu hoàn toàn tương ứng với 256 ký tự của tập mã ISO Latin-1 8-bit.
Một hằng ký tự ñược bao trong dấu nháy ñơn.
char k=’c’;
Kiểu C#
Số
byte
Kiểu .NET
Mô tả
char 2 Char Ký tự Unicode
3.2.4. Kiểu logic
Dùng ñể biểu diễn các giá trị logic và chỉ chứa một trong hai giá trị true và
false
Kiểu C#
Số
byte
Kiểu .NET
Mô tả
bool 1 Boolean Giá trị logic true/ false
BMCNPM
25
3.2.5. Kiểu xâu(chuỗi)
Kiểu dữ liệu chuỗi khá thân thiện với người lập trình trong bất cứ ngôn
ngữ lập trình nào, kiểu dữ liệu chuỗi lưu giữ một dãy các ký tự. ðể khai báo một
chuỗi chúng ta sử dụng từ khoá string tương tự như cách tạo một thể hiện của
bất cứ ñối tượng nào:
string tenchuoi;
Một hằng chuỗi ñược tạo bằng cách ñặt các chuỗi trong dấu nháy ñôi:
“Xin chao”
ðây là cách chung ñể khởi tạo một chuỗi ký tự với giá trị hằng:
string chuoi = “Xin chao”;
Kiểu chuỗi sẽ ñược ñề cập sâu trong phần sau
3.3. BiÕn, h»ng vµ c¸ch khai b¸o
3.3.1. Biến
Biến là yếu tố cơ bản của bất kỳ ngôn ngữ máy tính nào. Biến là vùng
trống trong bộ nhớ máy tính dành cho một kiểu dữ liệu nào ñó và có ñặt tên. Các
biến trong bộ nhớ ở các thời ñiểm khác nhau có thể cất giữ các giá trị khác nhau.
Trước khi sử dụng một biến nào ñó phải khai báo nó. Chính quy khai báo:
Kiểu 1: Khai báo biến không có giá trị khởi ñầu
Kiểu_dữ_liệu Tên_biến ;
Có thể khai báo nhiều biến cùng kiểu trên cùng một dòng, các tên biến
ñược phân cách nhau bằng dấu phẩy
Ví dụ 1:
int a,b; /*biến có kiểu nguyên*/
float f; /*biến thực*/
char ch; /*biến ký tự*/
Khai báo biến có giá trị khởi ñầu
Kiểu_dữ_liệu Tên_biến=giá trị ;
Ví dụ 2:
int a =5;
float b=6;
char ch=’A’; hoặc char ch=’\u0041’
Chú ý: Trong C# trước khi sử dụng một biến thì biến ñó phải ñược khởi gán
một giá trị cụ thể, nếu không chương trình dịch sẽ báo lỗi