MicrosoftTech.Net
Csharp Corner | MicrosoftTech.Net

Những khái niệm căn bản về Generic trong C#

  • Thứ 5, 25/04/2013
Những khái niệm căn bản về Generic trong C# Những khái niệm căn bản về Generic trong C#
10/10 152 Bình chọn
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 bạn có thể sử dụng hàm quick-sort đó cho mảng số nguyên, mảng số thực và cả mảng ký tự …

Đến đây có thể bạn vẫn chưa hình dung ra được Generic là như thế nào, chúng ta hãy bắt đầu với một ví dụ đơn giản trước để bước đầu hình dung về Generic và những lợi ích mang lại từ nó:

Những khái niệm căn bản về Generic trong C# | Lập trình Csharp
Ví dụ trên ta thấy rằng class GenericList được tạo ra với kiểu dự liệu T chung, đến khi sử dụng mới chính thức chỉ rõ T là kiểu dữ liệu gì. Như trong ví dụ list1, T được tương ứng với kiểu int; list2 T là kiểu string và list3 T là một lớp nào đó.

2. Sơ lược một số đặc điểm của Generic:

  • Generic định nghĩa một thao tác dữ liệu với kiểu dữ liệu chung nhất nhằm tối đa hóa việc sử dụng lại code trong chương trình, tạo ra các kiểu dữ liệu an toàn, đem lại hiệu suất cao nhất.
  • Ứng dụng phổ biến nhất của Generic là tạo ra các collection class (tạm dịch: lớp dữ liệu tập hợp).
  • Trong .NET framework có chứa sẵn các collection framework trong namespace System.Collections.Generic.
  • Với Generic bạn có thể tạo được các interface, class, method, event và delegates.
  • Generic có thể được hạn chế để cho phép truy cập tới các phương thức (method) trên các loại dữ liệu đặc biệt.

Ví dụ mẫu:
Những khái niệm căn bản về Generic trong C# | Lập trình Csharp
Trong ví dụ bên trên, ta định nghĩa 1 class Genericlist cho danh sách liên kết với kiểu dữ liệu mỗi Node là T. Bên trong ta tạo các Node với kiểu T, đồng thời tạo các con trỏ Next để liên kết danh sách, trường Data để lưu dữ liệu, có phương thức khởi tạo danh sách rỗng, thêm phần tử mới vào danh sách. Trong hàm main ta khởi tạo danh sách liên kết với kiểu dữ liệu mỗi Node là int và cho vòng for(0->9) để add giá trị cho danh sách liên kết, và cuối cùng dùng foreach để tìm tất cả các phần tử của danh sách và in ra Console.
Những khái niệm căn bản về Generic trong C# | Lập trình Csharp

3. Kết luận

Xem ví dụ ta thấy trong định nghĩa class Genericlist đều làm việc kiểu dữ liệu trừu tượng T , và có thể thay thế bất kỳ kiểu dữ liệu nào. Để làm được điều này trong quá trình định nghĩa ta phải đảm bảo các thuộc tính, phương thức hoạt động đúng trên nhiều kiểu dữ liệu khác nhau, giảm thiểu trường hợp phát sinh lỗi… Nếu nghiên cứu kỹ và làm việc nhiều với Generic sau một thời gian đảm bảo khả năng viết Code tổng quát, khả năng tư duy trừu tượng của các bạn sẽ tăng thêm rất nhiều.

Trong bài viết có 1 phần Nội dung liên quan đến Yield Return, để biết thêm về nội dung này bạn có thể xem thêm ở bài viết bên dưới:

Yield Return | Lập trình Csharp

MicrosoftTech.Net

If you've been programming in C++ then you are familiar with Templates (often called a function). A Template is used to create the content of a class without specifying the data type of arguments. Templates can increase the usefulness of the source code. With C# you will become familiar with the concept of generics that are similar to C++ Templates.
 
1. Generic concept
Generics have existed since version 2.0 of C# and the Common Language Runtime (CLR). Generics provide the .NET framework the new concept of parameterized types, classes as well as the function definition will not need to specify the parameters of the data type, all the most common form of treatment, from which users can develop in layers, with the function of a certain type of real data. Thus we see that inheritance concepts are strongly applied here, to help you save substantial costs in development, for example to build 1 function for a quick sort array without the center value of each element in the array is what type, then when you use a new type declaration for that element. So you can use the quick-sort function with the integer array, the array and the array of real characters.
 
At this point you might still not be able to figure out Generics, let's start with a simple example to initially envision Generics and the benefits of them:
 
Những khái niệm căn bản về Generic trong C# | Lập trình Csharp
 
The example above shows that the GenericList class is created with the data type T General, to use new T's we specify the new data type. As an example, in list1, T is equivalent to the type int; list2 list3 T is a string and T is a certain layers.
 
2. Summary of Generic certain characteristics
  • Generic definition of a data manipulation with the most common data types to maximize code reuse in the program, creating the type of data security, provides the highest performance.
  • Application of the most popular generic collection class is created (roughly translated: class data set).
  • The. NET Framework contains the collection framework available in the System.Collections.Generic namespace.
  • With that you can create generic interfaces, classes, methods, events and delegates.
  • Generics can be restricted to allow access to the method (method) on the particular type of data.
Sample:
 
Những khái niệm căn bản về Generic trong C# | Lập trình Csharp
 
In the example above, we define 1 Genericlist class for a linked list with each node's data type T. Inside the Node was created with T, and create the Next pointer to the link list, the Data to save the data, with the constructor empty list, add a new element to the list. In the main function we initialize the linked list data type is int, and for each node loop (0 -> 9) to add a value to the linked list, and finally use foreach to find all the elements and print out a list to the Console.
 
Những khái niệm căn bản về Generic trong C# | Lập trình Csharp
 
3. Conclusion
See the example shown in the class definitions that are working with Genericlist abstract data type T, and can replace any type of data. To do this we define the process to ensure the properties, the method works properly on various types of data, minimizing the errors that arise. Study and work a lot with the following Generics to ensure your ability to write generalized code, an ability to do abstract thinking will increase your lot.
In the first part of the article content related to Yield Return, to learn more about the content you can see in the article below:
 

Bài viết cùng chủ đề

  • Lập trình Windows Phone 8 cho người mới bắt đầu Lập trình Windows Phone 8 cho người mới bắt đầu
    Trong bài viết hôm nay chúng ta sẽ tìm hiểu về Lập trình Windows phone 8. Bài viết này sẽ mở đầu cho danh sách các bài viết về Lập trình windows phone 8 căn bản, đối tượng hướng đến là những người mới bắt đầu với Windows phone.
  • Chương trình Download nhạc từ mp3.zing.vn Chương trình Download nhạc từ mp3.zing.vn
    Trong bài viết này sẽ giới thiệu đến các bạn 1 chương trình nhỏ rất hữu ích, hỗ trợ cho việc tải nhạc từ trang web mp3.zing.vn một cách tiện lợi nhất. Thiết nghĩ chương trình này sẽ rất có ích cho nhiều người, đặc biệt là những ai có thói quen sưu tầm nhạc
  • Kỹ thuật xử lý Multi Thread trong Lập trình C# Kỹ thuật xử lý Multi Thread trong Lập trình C#
    Trong .NET các hàm xử lý Thread được định nghĩa bên trong namespace System.Threading; Trong một chương trình có xử lý đa luồng nghĩa là có hơn 1 luồng dữ liệu cùng được xử lý đồng thời và được...
  • Xử lý kiểu dữ liệu DateTime trong C# (P.2) Xử lý kiểu dữ liệu DateTime trong C# (P.2)
    Trong .NET framework hỗ trợ cho việc định dạng DateTime rất mạnh giúp bạn dễ dàng hơn trong việc kết xuất định dạng ngày tháng theo ý muốn. Để hiểu hơn về vấn đề này xin xem rõ ở ví dụ bên dưới
  • Xử lý kiểu dữ liệu DateTime trong C# (P.1) Xử lý kiểu dữ liệu DateTime trong C# (P.1)
    Các đối tượng Ngày, tháng trong C#. Có thể xem Datetime là một kiểu dữ liệu trong c#, thư viện hỗ trợ các method cho việc xử lý truy xuất thời gian trên máy tính như: Lấy thời gian, ngày tháng hiện tại
  • Từ khóa Var trong lập trình C# Từ khóa Var trong lập trình C#
    Từ khóa var hỗ trợ khởi tạo biến, mảng mà không cần khai báo kiểu dữ liệu, kiểu dữ liệu sẽ được xác định khi gán giá trị cho biến, lúc này chương trình sẽ tự ép kiểu cho biến. Và tất nhiên
  • Tìm hiểu về ArrayList trong C# (P.2) Tìm hiểu về ArrayList trong C# (P.2)
    Như ta biết mỗi Arraylist được tạo ra đều có sẵn một thuộc tính count để tính số lượng phần tử trong danh sách, như vậy ta có có lượng phần tử để quy định số lần lặp cho vòng lặp for(;; )...
  • Tìm hiểu về ArrayList trong C# (P.1) Tìm hiểu về ArrayList trong C# (P.1)
    Như ta thấy Arraylist là mảng động có thể thay đổi kích thước nên khi khai báo ta không xác định trước số lượng phần tử trong mảng này. Điều này đem lại một sự thuận lợi rất lớn trong việc...
  • Phương thức Reverse Array trong Lập trình Csharp Phương thức Reverse Array trong Lập trình Csharp
    Trong Lập trình csharp các dữ liệu kiểu mảng – tập hợp được hỗ trợ rất mạnh mẽ với đa dạng các các kiểu dữ liệu khác nhau. Mỗi kiểu dữ liệu được hỗ trợ gần như đầy đủ hết các...
  • Xây dựng ứng dụng đầu tiên với WPF Xây dựng ứng dụng đầu tiên với WPF
    Cũng như trong ứng dụng Winform bạn có thể thêm các control trực tiếp từ Toolbox thông qua các thao tác kéo thả. Ngoài ra bạn có thêm thêm control bằng cách viết mã trong XAML. Đây là điểm mới và cũng là...

Giỏ hàng

0
Sản phẩm
0
VND

On FaceBook...

 
 
 


x
^
Hỗ trợ
x
^