CÁC GIẢI PHÁP LẬP TRÌNH C# - Trang 61

61

Chương 2: Thao tác dữ liệu

ầu hết các ứng dụng đều cần thao tác trên một loại dữ liệu nào đó. Microsoft .NET
Framework
cung cấp nhiều kỹ thuật để đơn giản hóa hay nâng cao hiệu quả các
thao tác dữ liệu thông dụng. Chương này sẽ đề cập các kỹ thuật sau:

H

Thao tác chuỗi một cách hiệu quả (mục 2.1).

Mô tả các kiểu dữ liệu cơ sở bằng các kiểu mã hóa khác nhau (mục 2.2, 2.3, và 2.4).

Sử dụng biểu thức chính quy để xác nhận tính hợp lệ và thao tác chuỗi (mục 2.5 và
2.6).

Làm việc với ngày và giờ (mục 2.7 và 2.8).

Làm việc với mảng và tập hợp (mục 2.9, 2.10, và 2.11).

Tuần tự hóa trạng thái đối tượng và lưu nó vào file (mục 2.12).

1.

1.

Thao tác chu i m t cách hi u qu

ỗ ộ

Thao tác chu i m t cách hi u qu

ỗ ộ

Bạn cần thao tác trên nội dung của một đối tượng

String

và tránh chi phí của

việc tự động tạo các đối tượng

String

mới do tính không đổi của đối tượng

String

.

Sử dụng lớp

System.Text.StringBuilder

để thực hiện các thao tác, sau đó chuyển

kết quả thành

String

bằng phương thức

StringBuilder.ToString

.

Các đối tượng

String

trong .NET là không đổi, nghĩa là một khi đã được tạo thì chúng không

thể bị thay đổi. Ví dụ, nếu bạn tạo một

String

bằng cách nối một số ký tự hoặc chuỗi, thì khi

thêm một phần tử mới vào cuối

String

hiện có, bộ thực thi sẽ tạo ra một

String

mới chứa kết

quả (chứ không phải

String

cũ bị thay đổi). Do đó sẽ nảy sinh chi phí đáng kể nếu ứng dụng

của bạn thường xuyên thao tác trên

String

.

Lớp

StringBuilder

khắc phục vấn đề này bằng cách cung cấp một bộ đệm ký tự, và cho phép

thao tác trên nội dung của nó mà bộ thực thi không phải tạo đối tượng mới để chứa kết quả
sau mỗi lần thay đổi. Bạn có thể tạo một đối tượng

StringBuilder

rỗng hoặc được khởi tạo là

nội dung của một

String

hiện có. Sau đó, thao tác trên nội dung của

StringBuilder

này bằng

các phương thức nạp chồng (cho phép bạn chèn, thêm dạng chuỗi của các kiểu dữ liệu khác
nhau). Cuối cùng, gọi

StringBuilder.ToString

để chuyển nội dung hiện tại của

StringBuilder

thành một

String

.

Khi bạn thêm dữ liệu mới vào chuỗi, có hai thuộc tính quan trọng ảnh hưởng đến hoạt động
của

StringBuilder

Capacity

Length

.

Capacity

mô tả kích thước của bộ đệm

StringBuilder

, còn

Length

mô tả kích thước của chuỗi ký tự trong bộ đệm. Nếu việc thêm dữ

liệu mới vào

StringBuilder

làm kích thước chuỗi (

Length

) vượt quá kích thước bộ đệm

(

Capacity

) thì

StringBuilder

sẽ cấp phát bộ đệm mới để chứa chuỗi. Nếu thiếu cẩn thận, việc

cấp phát bộ đệm này có thể phủ định lợi ích của việc sử dụng

StringBuilder

. Do đó, nếu biết

chính xác kích thước của chuỗi, hoặc biết kích thước tối đa của chuỗi, bạn có thể tránh việc
cấp phát bộ đệm quá mức cần thiết bằng cách thiết lập thuộc tính

Capacity

hoặc chỉ định kích

thước bộ đệm lúc tạo

StringBuilder

. Khi thiết lập các thuộc tính

Capacity

Length

, cần chú

ý các điểm sau:

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.