1. Trang chủ
  2. » Công Nghệ Thông Tin

Tài liệu Hướng Đối Tượng Trong C# part 7 docx

3 361 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Hướng Đối Tượng Trong C# Part 7
Trường học Trường Đại Học Công Nghệ Thông Tin
Chuyên ngành C#
Thể loại Tài liệu
Định dạng
Số trang 3
Dung lượng 129,15 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Struct Cú pháp để định nghĩa một struct được mô tả trong ví dụ sau: struct Dimensions { public double Length; public double Width; } Ta thấy Dimensions được định nghĩa như trên gọi

Trang 1

Struct

Cú pháp để định nghĩa một struct được mô tả trong ví dụ sau:

struct Dimensions

{

public double Length;

public double Width;

}

Ta thấy Dimensions được định nghĩa như trên gọi là một struct Một struct dùng để nhóm

một số dữ liệu lại với nhau Trong C#, một struct được định nghĩa gần giống như một lớp chỉ khác từ khoá và một vài điểm như sau:

1.Struct là một kiểu giá trị, không phải là kiểu tham khảo

2 Struct không hổ trợ thừa kế

3 Có vài sự khác nhau trong cách làm việc của các constructor đối với struct Trình biên dịch luôn luôn cung cấp một constructor không tham số mặc định, và không được cho phép thay thế

4 Với một struct, bạn có thể chỉ rỏ cách mà các trường được đặt ngoài bộ nhớ

Struct là các kiểu giá trị:

Mặc dù struct là kiểu giá trị nhưng cú pháp để sử dụng nó giống như sử dụng lớp Ví dụ như bạn khai báo như trên thì bạn có thể viết như sau:

Dimensions point = new Dimensions();

point.Length = 3;

point.Width = 6;

Chú ý rằng struct là các kiểu giá trị, do đó thao tác new sẽ không làm việc theo cách của

lớp hay những kiểu tham khảo khác Nó chỉ đơn giản định vị trên bộ nhớ và gọi

constructor thích hợp để khởi tạo các trường Do đó bạn hoàn toàn có thể viết:

Dimensions point;

Trang 2

point.Length = 3;

point.Width = 6;

Nếu Dimensions là một lớp thì đoạn mã trên sẽ báo lỗi nhưng là một struct thì hoàn toàn

hợp lý Bởi vì là một struct rất dể để gán giá trị Nhưng trình biên dịch sẽ báo lỗi nếu bạn viết mã như sau:

Dimensions point;

Double D = point.Length;

Trình biên dịch sẽ báo bạn đã sử dụng một biến chưa khởi tạo Và khi sử dụng struct bạn phải tuân thủ một số quy định sau cho mọi kiểu dữ liệu :

Mọi thứ đều phải được khởi tạo trước khi sử dụng Một struct được xem như được khởi

tạo đầy đủ khi thao tác new được gọi hay khi tất cả các trường đều được gán giá trị Một

struct được định nghĩa là một trường thành viên của một lớp thì nó sẽ được tự động khởi tạo khi đối tượng khởi tạo

Struct và thừa kế:

Struct không hổ trợ thừa kế, tức là bạn không thể thừa kế từ một struct khác, hay từ bất

kỳ lớp nào lớp Nhưng nó cũng như các kiểu dữ liệu khác đều thừa kế từ lớp

System.object Và chúng ta có thể override trong một struct Ví dụ ta override phương thức ToString() trong struct sau:

struct Dimensions

{

public double Length;

public double Width;

Dimensions(double length, double width)

{ Length=length; Width=width; }

public override string ToString()

{

return "( " + Length.ToString() + " , " + Width.ToString() + " )";

}

}

Chúng ta khai báo phương thức như làm trong một lớp Nhưng chú ý rằng không được khai báo virtual, abstract, hay sealed trong bất kỳ thành viên nào của struct Một lớp thì

có thể thừa kế từ một struct nhưng làm ngược lại thì không cho phép

Constructor cho struct :

Trang 3

Bạn có thể định nghĩa constructor cho các struct như làm với lớp Nhưng bạn không được phép định nghĩa constructor không có tham số Có một số trường hợp hiếm thấy trong thời gian chạy của NET sẽ không thể gọi một constructor không tham số mà bạn cung cấp Chính vì thế microsoft đã cấm định nghĩa constructor không tham số cho struct trong C#

Bạn có thể cung cấp một phương thức Close() hay Dispose() cho một struct nhưng bạn

không được phép định nghĩa Destructor

 

Ngày đăng: 21/01/2014, 16:20

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm