Generic « MicrosoftTech.Net

Struct with Generic

Trong bài viết trước ta đã tìm hiểu một số khái niệm cơ bản trong Struct, và thiết nghĩ đó cũng là những yếu tố không thể thiếu khi Lập trình với struct. Và không nhiên ngoài những yếu tố căn bản như vậy, trong Struct nói riêng và Lập trình nói chung cần tìm thêm những phương thức diển đạt mới hơn, để có thể diễn đạt được nhiều ý nghĩa hơn về một thực thể nào đó. Giúp cho quá trình thao tác dữ liệu có thêm nhiều phương pháp khác nhau, đem lại những hiệu quả tốt hơn so với các phương pháp truyền thống. Để tìm hiểu hơn về Generic ta tham khảo tại bài viết dưới đây:

Generic trong Lập trình Csharp | MicrosoftTech.Net

Mang Generic vào Struct Ta thấy rằng Struct là kiểu dữ liệu tự định nghĩa nhằm giúp kết hợp từ nhiều kiểu dữ liệu cơ sở để tạo ra những kiểu dự liệu mới phong phú, đa dạng hơn. Cụ thể trong các struct thường chứa từ 2 và hơn 2 trường dữ liệu khác nhau. Nhưng ta thấy rằng khi khai báo struct có một khuyết điểm là dùng trên những kiểu dữ liệu cố định duy nhất. Kiểu khai báo như vậy sẽ gặp rất nhiều hạm chế, tiêu tốn nhiều thời giam cho những công việc lặp đi lặp lại. Nhở lại trong một bài trước đây ta đã từng có tìm hiểu về Generic – …..

Jag Array & Generic

Khi làm việc với mảng 2 chiều thông thường ta thường gặp trường hợp khai báo mảng xong không sử dụng hết dẫn đến trường hợp lãng phí tài nguyên. Trong bài viết này ta tìm hiểu cơ chế tạo mảng tối ưu hơn, mảng có khả năng tận dụng hết khoảng trống của nó, khai báo bao nhiêu dùng bây nhiều, không còn tình trạng dư thừa.

1. Jag Array – Mảng lởm chởm

Jag Array xét về bản chất là mảng của mảng. Ví dụ bên dưới ta khai báo mảng 2 chiều a, ta dễ dàng thấy sự khác biệt nho nhỏ trong cách khai báo. Mảng a được khai báo là 1 mảng bao hàm bởi 3 mảng con, số lượng phần tử của mỗi mảng con được khai báo mỗi lần trước khi sử dụng. Ta thấy số lượng phần tử trên mỗi mảng con hoàn toàn khác nhau. Đây là một điểm mảnh của Jag Array! Ta không bàn tới cách khởi tạo mảng nữa vì quá đơn giản, không có gì để nói hơn. Kế đến là phương pháp duyệt mảng, vì đây là mảng không đều nên chắc chắn cách duyệt mảng cũng theo phương pháp bất đối xứng. Thuộc tính a.Length cho biết số mảng con chứa trong a, tại mỗi mảng con ta tiếp tục dùng Length để tìm độ dài của mảng con, tiến hành duyệt mảng bằng 2 vòng for lồng nhau.

…..

Generic

Nếu bạn đã từng Lập trình C++ thì chắc hẳn đã từng biết tới khái niệm Template (thường được gọi là mẫu hàm) Template được dùng để tạo các hàm các class mẫu mà không cần quan tâm đến đối số là kiểu dữ liệu gì, template được đưa ra với mục đích tăng tính năng sử dụng lại của mã nguồn. Đến với C# bạn sẽ làm quen với khái niệm Generic với những tính năng tương tự Template trong C++.

1. Khái niệm Generic

Generic được đưa vào C# từ version 2.0 và common language runtime (CLR). Generic mang đến .NET framework khái niệm mới về kiểu tham số, các lớp cũng như các hàm khi định nghĩa sẽ không cần chỉ rõ tham số đưa vào thuộc kiểu dữ liệu gì, tất cả đều được xử lý dưới dạng chung nhất, từ đó người dùng có thể phát triển thành từng lớp, hàm với đối số là một kiểu dữ liệu thực nhất định. Như vậy ta thấy rằng tính kế thừa trong lập trình được áp dụng mạnh mẽ tại đây, giúp bạn tiết kiệm rất nhiều chi phí trong việc xây dựng chương trình; Ví dụ bạn xây dựng 1 hàm quick sort cho 1 mảng mà không cần quan tâm giá trị của từng phần tử trong mảng là kiểu gì, sau đó khi sử dụng bạn mới khai báo kiểu cho các phần tử đó. Như vậy …..