
CÁC LỚP CƠ SỞ .NET
· Lớp đối tượng trong .NET Framework
• Common Language
Specification(CLR)
• Kiểu dữ liệu trong namespace
• Tiêu chuẩn ECMA
• Tìm hiểu những lớp Framework
· Lớp Timer
· Lớp về thư mục & hệ thống
· Lớp Math
· Lớp thao tác tập tin
• Sao chép một tập tin
• Lấy thông tin về tập tin
· Làm việc với tập tin dữ liệu
• Luồng nhập xuất
• Thứ tự của việc đọc một tập tin
• Các phương pháp cho việc tạo và mở
một tập tin
• Viết vào một tập tin văn bản
• Đọc tập tin văn bản
• Viết thông tin nhị phân vào tập tin
• Đọc thông tin nhi phân từ tập tin
· Câu hỏi & bài tập
Cho đến lúc này thì chúng ta đã tìm hiểu khá nhiều các lớp đối tượng mà ngôn
ngữ C# cung cấp cho chúng ta. Và hiện tại chúng ta đã có thể viết được các chương
trình C# thuần túy dùng console làm giao diện kết xuất. Đối với việc tìm hiểu bất cứ
ngôn ngữ lập trình nào thì việc viết các chương trình mà giao diện càng đơn giản thì
càng tốt. Trong phần thứ hai (từ chương 14) của giáo trình chúng ta sẽ tìm hiểu xây
dựng các ứng dụng Windows thông qua Visual C#.

Trong chương này chúng ta sẽ tìm hiểu các lớp cơ sở mà .NET cung cấp, các lớp này
đơn giản giúp chúng ta thực hiện tốt các thao tác nhập xuất, các thao tác truy cập hệ
thống, thực thi các phép toán học,...
Lớp đối tượng trong .NET Framework
NET Framework chứa số lượng nhiều những kiểu dữ lớp, những kiểu liệt kê,
những cấu trúc, những giao diện và nhiều kiểu dữ liệu khác nữa. Thật vậy, có hàng
ngàn số lượng các kiểu như trên. Những lớp này điều cho phép chúng ta sử dụng trong
chương trình C#.
Chúng ta sẽ tìm hiểu một vài kiểu dữ liệu thường sử dụng trong chương này. Các lớp
được trình bày thông qua các ví dụ minh họa đơn giản. Từ những ví dụ minh họa cách sử
dụng các
lớp cơ sở này chúng ta có thể mở rộng để tạo ra các chương trình phức tạp hơn.
Common Language Specification (CLR)
Những lớp bên trong Framework được viết với ngôn ngữ được xác nhận là
chung nhất (CLR). CLR đã được đề cập vào phần đầu của sách khi chúng ta thảo luận
về MS.NET trong chương 1.
CLS là một tập hợp các luật hay các quy tắc mà tất cả các ngôn ngữ thực hiện bên
trong .NET platform phải tuân thủ theo. Tập hợp luật này cũng bao gồm kiểu dữ liệu
hệ thống chung, các kiểu dữ liệu cơ bản mà chúng ta được tìm hiểu trong chương 3 -
Nền tảng ngôn ngữ C#. Bằng cách đưa vào các tập luật này, môi trường thực thi
chung sẽ có thể thực thi một chương trình
mà không quan tâm đến cú pháp của ngôn ngữ được sử dụng.
Lợi ích theo sau của CLS là mã nguồn được viết trong một ngôn ngữ có thể được gọi sử
dụng
bởi một ngôn ngữ khác Bởi vì thông thường bên trong Framework với CLS, chúng
có thể sử dụng không chỉ ngôn ngữ C# mà còn bất cứ ngôn ngữ tương thích với
CLS như là Visual Basic.NET và JScript.NET.
Kiểu dữ liệu trong namespace
Mã nguồn bên trong Framework được tổ chức bên trong namespace. Có
hàng trăm namespace bên trong Framework được sử dụng để tổ chức hàng ngàn lớp
đối tượng và các kiểu dữ liệu khác.
Một vài namespace thì được lưu trữ bên trong namespace khác. Ví dụ chúng ta đã
sử dụng kiểu dữ liệu DateTime được chứa trong namespace System. Kiểu Random
cũng được chứa trong namespace System. Nhiều kiểu dữ liệu phục vụ cho thao tác
nhập xuất cũng được lưu trữ trong một namespace chức trong namespace System là
namespace System.IO. Nhiều kiểu

dữ liệu thường dùng để làm việc với dữ liệu XML thì được đặt bên trong
namespace System.XML. Chúng ta có thể tìm hiểu các namespace này trong các tài
liệu trực tuyến của Microsoft như MSDN Online chẳng hạn.
Tiêu chuẩn ECMA
Không phải tất cả kiểu dữ liệu bên trong namespace thì cần thiết phải tương thích
với tất
cả những ngôn ngữ khác. Hơn thế nữa, những công cụ phát triển được tạo bởi những
công ty khác cho ngôn ngữ C# có thể không bao hàm phải tương thích với mã nguồn
thông thường.
Khi ngôn ngữ C# được hình thành. Microsoft xác nhận đưa ra một số lượng lớn các
kiểu dữ liệu cho cùng một bảng tiêu chuẩn cho C# để chuẩn hóa. Bằng cách xác nhận
những kiểu dữ liệu theo một tiêu chuẩn, điều này xem như việc mở cánh cửa cho
những nhà phát triển khác tạo ra các công cụ và trình biên dịch C# cùng sử dụng
những namespace và kiểu dữ liệu. Khi đó những mã nguồn bên trong những công cụ
của Microsoft tương thích với bất cứ công cụ của các công ty khác.
Những lớp đối tượng được chuẩn hóa thì được định vị bên trong namespace System.
Những namespace khác chứa những lớp không được chuẩn hóa. Nếu một lớp không
phải là một phần của tiêu chuẩn, nó sẽ không được hỗ trợ trong tất cả hệ điều hành và
môi trường thực thi mà chúng được viết để hỗ trợ C#. Ví dụ, Microsoft thêm vào một
vài namespace với SDK của nó như Microsoft.VisualBasic, Microsoft.CSharp,
Microsoft.Jscript và Microsoft.Win32. Những namespace này không phải là một
phần của tiêu chuẩn ECMA. Do đó chúng có thể không có giá trị trong tất cả môi
trường phát triển.

Tìm hiểu những lớp Framework
Như chúng ta đã biết là có hàng ngàn những lớp và những kiểu dữ liệu khác bên
trong thư viện cơ sở. Có thể sẽ tốn vài cuốn 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 hiểu những lớp cơ bản, bạn có thể
xem tổng quan tài liệu trực tuyến để biết thêm các lớp cơ cở. Tất cả các lớp và
những kiểu dữ liệu khác được trình bày trong chương này điều là một phần của tiêu
chuẩn được xác nhận bởi ECMA.
Lưu ý: Không những chúng ta có thể sử dụng những kiểu dữ liệu bên trong những
lớp thư viện mà chúng ta còn có thể mở rộng những kiểu dữ liệu này.
Lớp Timer
Chúng ta bắt đầu với ví dụ đầu tiên 12.1. Ví dụ minh họa này hết sức đơn giản và được
thiết
kế không được tốt.
Ví dụ 12.1: Hiển thị thời gian.
-----------------------------------------------------------------------------
// Timer01.cs: Hiển thị ngày và thời gian
// nhấn 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ể thấy, kết quả chương trình được thực thi vào lúc 3:21 vào ngày 24
tháng 12. Danh sách này thể hiện một đồng hồ xuất hiện ở dòng lệnh, và chúng dường
như là được cập nhật trong mỗi giây đồng hồ. Thật vậy, nó thông thường được cập
nhật nhiều hơn một lần, do đó chúng ta lưu ý là giây đồng hồ thay đổi chỉ khi giá trị
xuất hiện thật sự khác nhau. Chương trình sẽ chạy mãi đến khi nào ta nhấn thoát bằng
Ctrl + C.
Trong chương trình ta sử dụng kiểu dữ liệu DateTime, đây là một cấu trúc được chứa
trong namespace System bên trong thư viện cơ sở. Cấu trúc này có một thuộc tính tĩnh
là Now trả về thời gian hiện hành. Có nhiều dữ liệu thành viên và những phương thức
được thêm vào trong cấu trúc DateTime. Chúng ta có thể tìm hiểu thêm về DateTime
trong thư viện trực tuyến về các lớp cơ sở của .NET Framework.
Cách tốt nhất để hiện thị ngày giờ trên màn hình là sử dụng Timer. Một Timer cho phép
một xử lý (hình thức của một delegate) được gọi tại một thời gian xác định hay sau
một chu kỳ nào đó trôi qua. Framework chứa một lớp Timer bên trong namespace
System.Timers. Lớp này được sử dụng trong ví dụ 12.2 theo sau:
Ví dụ 12.2: Sử dụng Timer.
-----------------------------------------------------------------------------
// Timer02.cs: hiểu thị ngày giờ sử dụng Timer
// nhấn 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ử lý
myTimer.Elapsed += new ElapsedEventHandler( DisplayTimeEvent);
// khoảng thời gian delay
myTimer.Interval =
1000; myTimer.Start();
// thực hiện vòng lặp để chờ thoát
while ( Console.Read() != ‘q’)
{
; // không làm gì hết!
}
}

