CÁC LP CƠ S .NET
· Lp đối tượng trong .NET Framework
Common Language
Specification(CLR)
Kiu d liu trong namespace
Tiêu chun ECMA
Tìm hiu nhng lp Framework
· Lp Timer
· Lp v thư mc & h thng
· Lp Math
· Lp thao tác tp tin
Sao chép mt tp tin
Ly thông tin v tp tin
· Làm vic vi tp tin d liu
Lung nhp xut
Th t ca vic đọc mt tp tin
Các phương pháp cho vic to và m
mt tp tin
Viết vào mt tp tin văn bn
Đọc tp tin văn bn
Viết thông tin nh phân vào tp tin
Đọc thông tin nhi phân t tp tin
· Câu hi & bài tp
Cho đến lúc này thì chúng ta đã tìm hiu khá nhiu các lp đối tượng mà ngôn
ng C# cung cp cho chúng ta. Và hin ti chúng ta đã có th viết được các chương
trình C# thun túy dùng console làm giao din kết xut. Đối vi vic tìm hiu bt c
ngôn ng lp trình nào thì vic viết các chương trình mà giao din càng đơn gin thì
càng tt. Trong phn th hai (t chương 14) ca giáo trình chúng ta s tìm hiu xây
dng các ng dng Windows thông qua Visual C#.
Trong chương này chúng ta s tìm hiu các lp cơ s mà .NET cung cp, các lp này
đơn gin giúp chúng ta thc hin tt các thao tác nhp xut, các thao tác truy cp h
thng, thc thi các phép toán hc,...
Lp đối tượng trong .NET Framework
NET Framework cha s lượng nhiu nhng kiu d lp, nhng kiu lit kê,
nhng cu trúc, nhng giao din và nhiu kiu d liu khác na. Tht vy, có ng
ngàn s lượng các kiu như trên. Nhng lp này điu cho phép chúng ta s dng trong
chương trình C#.
Chúng ta s tìm hiu mt vài kiu d liu thường s dng trong chương này. Các lp
được trình bày thông qua các ví d minh ha đơn gin. T nhng ví d minh ha cách s
dng các
lp cơ s này chúng ta có th m rng để to ra các chương trình phc tp hơn.
Common Language Specification (CLR)
Nhng lp bên trong Framework đưc viết vi ngôn ng được xác nhn là
chung nht (CLR). CLR đã được đề cp vào phn đầu ca sách khi chúng ta tho lun
v MS.NET trong chương 1.
CLS là mt tp hp các lut hay các quy tc mà tt c các ngôn ng thc hin bên
trong .NET platform phi tuân th theo. Tp hp lut này cũng bao gm kiu d liu
h thng chung, các kiu d liu cơ bn mà chúng ta được tìm hiu trong chương 3 -
Nn tng ngôn ng C#. Bng cách đưa vào các tp lut này, môi trường thc thi
chung s có th thc thi mt chương trình
mà không quan tâm đến cú pháp ca ngôn ng được s dng.
Li ích theo sau ca CLS là mã ngun được viết trong mt ngôn ng có th được gi s
dng
bi mt ngôn ng khác Bi vì thông thường bên trong Framework vi CLS, chúng
có th s dng không ch ngôn ng C# mà còn bt c ngôn ng tương thích vi
CLS như Visual Basic.NET và JScript.NET.
Kiu d liu trong namespace
Mã ngun bên trong Framework được t chc bên trong namespace. Có
hàng trăm namespace bên trong Framework được s dng để t chc hàng ngàn lp
đối tượng và các kiu d liu khác.
Mt vài namespace thì được lưu tr bên trong namespace khác. Ví d chúng ta đã
s dng kiu d liu DateTime được cha trong namespace System. Kiu Random
cũng được cha trong namespace System. Nhiu kiu d liu phc v cho thao tác
nhp xut cũng được lưu tr trong mt namespace chc trong namespace System
namespace System.IO. Nhiu kiu
d liu thường dùng để làm vic vi d liu XML thì được đặt bên trong
namespace System.XML. Chúng ta có thm hiu các namespace này trong các tài
liu trc tuyến ca Microsoft như MSDN Online chng hn.
Tiêu chun ECMA
Không phi tt c kiu d liu bên trong namespace thì cn thiết phi tương thích
vi tt
c nhng ngôn ng khác. Hơn thế na, nhng công c phát trin được to bi nhng
công ty khác cho ngôn ng C# có th không bao hàm phi tương thích vi mã ngun
thông thường.
Khi ngôn ng C# được hình thành. Microsoft xác nhn đưa ra mt s lượng ln các
kiu d liu cho cùng mt bng tiêu chun cho C# để chun hóa. Bng cách xác nhn
nhng kiu d liu theo mt tiêu chun, điu này xem như vic m cánh ca cho
nhng nhà phát trin khác to ra các công c và trình biên dch C# cùng s dng
nhng namespace và kiu d liu. Khi đó nhng mã ngun bên trong nhng công c
ca Microsoft tương thích vi bt c công c ca các công ty khác.
Nhng lp đối tượng được chun hóa thì được định v bên trong namespace System.
Nhng namespace khác cha nhng lp không được chun hóa. Nếu mt lp không
phi là mt phn ca tiêu chun, nó s không được h tr trong tt c h điu hành và
môi trường thc thi mà chúng được viết để h tr C#. Ví d, Microsoft thêm vào mt
vài namespace vi SDK ca nó như Microsoft.VisualBasic, Microsoft.CSharp,
Microsoft.Jscript Microsoft.Win32. Nhng namespace này không phi là mt
phn ca tiêu chun ECMA. Do đó chúng có th không có giá tr trong tt c môi
trường phát trin.
m hiu nhng lp Framework
Như chúng ta đã biết là có hàng ngàn nhng lp và nhng kiu d liu khác bên
trong thư vin cơ s. Có th s tn vài cun sách có kích thước như giáo trình này
để nói toàn b v chúng. Trước khi chúng ta tìm hiu nhng lp cơ bn, bn có th
xem tng quan tài liu trc tuyến để biết thêm các lp cơ c. Tt c các lp và
nhng kiu d liu khác đưc trình bày trong chương này điu là mt phn ca tiêu
chun được xác nhn bi ECMA.
Lưu ý: Không nhng chúng ta có th s dng nhng kiu d liu bên trong nhng
lp thư vin mà chúng ta còn có th m rng nhng kiu d liu này.
Lp Timer
Chúng ta bt đầu vi ví d đầu tiên 12.1. Ví d minh ha này hết sc đơn gin và được
thiết
kế không được tt.
Ví d 12.1: Hin th thi gian.
-----------------------------------------------------------------------------
// Timer01.cs: Hin th ngày và thi gian
// nhn Ctrl+C để thoát
namespace
Programming_CSharp
{
using System;
public class Tester
{
public static void Main()
{
while (true)
{
Console.WriteLine(“\n {0}”, DateTime.Now);
}
}
}
}
-----------------------------------------------------------------------------
Kết qu:
12/24/2001 3:21:20 PM
.......
.......
-----------------------------------------------------------------------------
Như chúng ta có th thy, kết qu chương trình được thc thi vào lúc 3:21 vào ngày 24
tháng 12. Danh sách này th hin mt đồng h xut hin dòng lnh, và chúng dường
nhưđược cp nht trong mi giây đồng h. Tht vy, nó thông thường được cp
nht nhiu hơn mt ln, do đó chúng ta lưu ý là giây đồng h thay đổi ch khi giá tr
xut hin tht s khác nhau. Chương trình s chy mãi đến khi nào ta nhn thoát bng
Ctrl + C.
Trong chương trình ta s dng kiu d liu DateTime, đây là mt cu trúc được cha
trong namespace System bên trong thư vin cơ s. Cu trúc này có mt thuc tính tĩnh
là Now tr v thi gian hin hành. Có nhiu d liu thành viên và nhng phương thc
được thêm vào trong cu trúc DateTime. Chúng ta th m hiu thêm v DateTime
trong thư vin trc tuyến v các lp cơ s ca .NET Framework.
ch tt nht để hin th ngày gi trên màn hình là s dng Timer. Mt Timer cho phép
mt x lý (hình thc ca mt delegate) được gi ti mt thi gian xác định hay sau
mt chu k nào đó trôi qua. Framework cha mt lp Timer bên trong namespace
System.Timers. Lp này được s dng trong ví d 12.2 theo sau:
Ví d 12.2: S dng Timer.
-----------------------------------------------------------------------------
// Timer02.cs: hiu th ngày gi s dng Timer
// nhn Ctrl+C hay ‘q’ và Enter để thoát
namespace Programming_CSharp
{
using System;
using System.Timers;
public class Tester
{
public static void Main()
{
Timer myTimer = new Timer();
// khai báo hàm x
myTimer.Elapsed += new ElapsedEventHandler( DisplayTimeEvent);
// khong thi gian delay
myTimer.Interval =
1000; myTimer.Start();
// thc hin vòng lp để ch thoát
while ( Console.Read() != ‘q’)
{
; // không làm hết!
}
}