Struct
Số trang: 5
Loại file: pdf
Dung lượng: 87.85 KB
Lượt xem: 7
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
StructCú 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...
Nội dung trích xuất từ tài liệu:
Struct StructCú 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 structdùng để nhóm một số dữ liệu lại với nhau. Trong C#, một struct được địnhnghĩ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ớistruct. 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ệctheo 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ạnhoàn toàn có thể viết: Dimensions point; 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 structthì hoàn toàn hợp lý. Bởi vì là một struct rất dể để gán giá trị. Nhưng trìnhbiê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êncủ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 đềuthừ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ằngkhông được khai báo virtual, abstract, hay sealed trong bất kỳ thành viên nàocủ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 :Bạn có thể định nghĩa constructor cho các struct như làm với lớp. Nhưngbạ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ộtconstructor 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 structnhưng bạn không được phép định nghĩa Destructor.
Nội dung trích xuất từ tài liệu:
Struct StructCú 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 structdùng để nhóm một số dữ liệu lại với nhau. Trong C#, một struct được địnhnghĩ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ớistruct. 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ệctheo 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ạnhoàn toàn có thể viết: Dimensions point; 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 structthì hoàn toàn hợp lý. Bởi vì là một struct rất dể để gán giá trị. Nhưng trìnhbiê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êncủ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 đềuthừ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ằngkhông được khai báo virtual, abstract, hay sealed trong bất kỳ thành viên nàocủ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 :Bạn có thể định nghĩa constructor cho các struct như làm với lớp. Nhưngbạ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ộtconstructor 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 structnhưng bạn không được phép định nghĩa Destructor.
Tìm kiếm theo từ khóa liên quan:
lập trình tài liệu lập trình kỹ thuật lập trình giáo trình C ngôn ngữ lập trình C tự học lập trình với CGợi ý tài liệu liên quan:
-
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 247 0 0 -
101 trang 198 1 0
-
NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM THIẾT KẾ WEB
8 trang 187 0 0 -
Giới thiệu môn học Ngôn ngữ lập trình C++
5 trang 181 0 0 -
Luận văn: Nghiên cứu kỹ thuật giấu tin trong ảnh Gif
33 trang 147 0 0 -
Bài giảng Nhập môn về lập trình - Chương 1: Giới thiệu về máy tính và lập trình
30 trang 147 0 0 -
Tìm hiểu về ngôn ngữ lập trình C: Phần 1 - Quách Tuấn Ngọc
211 trang 146 0 0 -
161 trang 129 1 0
-
Bài giảng lập trình c căn bản - Trường Apptech - Chương 4
27 trang 117 0 0 -
Giáo trình Lập trình C căn bản - HanoiAptech Computer Education Center
136 trang 116 0 0