Tuple trong C#
Khóa học lập trình C# nâng cao

Danh sách bài học
Tuple trong C#
Nội dung bài viết Học nhanh
Dẫn nhập
Ở các bài học trước, chúng ta đã cùng nhau tìm hiểu về DICTIONARY TRONG C#. Hôm nay chúng ta sẽ cùng tìm hiểu về Tuple trong C#.
Nội dung
Để đọc hiểu bài này tốt nhất các bạn nên có kiến thức cơ bản về các phần:
- BIẾN , KIỂU DỮ LIỆU, TOÁN TỬ trong C#
- CÂU ĐIỀU KIỆN trong C#
- Cấu trúc cơ bản của VÒNG LẶP, HÀM trong C#
- MẢNG trong C#
- LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG TRONG C#
Trong bài học này, chúng ta sẽ cùng tìm hiểu các vấn đề:
- Tuple là gì?
- Cách sử dụng Tuple.
Tuple là gì?
Tuple là một kiểu dữ liệu có cấu trúc, giúp lưu trữ các dữ liệu phức tạp mà không cần phải tạo ra một struct hay class mới (Nếu bạn nào chưa nắm về kiểu dữ liệu có cấu trúc cũng như struct, class thì có thể xem lại bài STRUCT TRONG C# và CLASS TRONG C#).
C# cung cấp cho chúng ta:
- 8 lớp generic (khái niệm về generic đã được trình bày trong bài GENERIC TRONG C#) Tuple<>.
public class Tuple <T1>
public class Tuple <T1, T2>
public class Tuple <T1, T2, T3>
public class Tuple <T1, T2, T3, T4>
public class Tuple <T1, T2, T3, T4, T5>
public class Tuple <T1, T2, T3, T4, T5, T6>
public class Tuple <T1, T2, T3, T4, T5, T6, T7>
public class Tuple <T1, T2, T3, T4, T5, T6, T7, TRest>
Mỗi lớp Tuple<> đã được định nghĩa sẵn các Property có tên Item1, Item2, Item3,… tương ứng với các kiểu dữ liệu T1, T2, T3,… được truyền vào. Hình ảnh sau đây là một ví dụ:
Đây là hình ảnh lớp Tuple<T1, T2>, khi ta truyền 2 kiểu dữ liệu vào T1, T2 thì trong lớp này sẽ có 2 Property Item1, Item2 có kiểu dữ liệu tương ứng.
- Một static class (khái niệm về static class đã được trình bày trong bài STATIC TRONG C#) Tuple. Trong lớp sẽ chứa các hàm Create<> nhằm khởi tạo một Tuple:
Nhìn dài dòng vậy thôi chứ thật ra mỗi hàm Create sẽ tương ứng tạo 1 đối tượng kiểu generic Tuple mình đã giới thiệu ở trên.
Sử dụng Tuple như thế nào khi đã có struct và class?
Đến đây nhiều bạn sẽ thắc mắc Tuple được sử dụng khi nào trong khi đã có struct và class?
- Trường hợp đầu tiên là khi bạn viết một phương thức và muốn trả về 1 lúc nhiều giá trị. Lúc này Tuple sẽ giúp bạn dễ dàng giải quyết mà không cần phải tạo thêm struct hay class.
- Trong nhiều trường hợp khác bạn chỉ muốn tạo nhanh 1 đối tượng với 1 vài thuộc tính và chỉ sử dụng 1 lần thôi thì việc dùng struct hoặc class là rất lãng phí, làm chương trình của bạn trở nên dài dòng hơn. Khi đó Tuple được sử dụng như một phương án thay thế tốt hơn vì có sẵn rồi giờ lấy ra dùng thôi không cần khai báo gì nữa.
- Ngoài ra, Tuple đã override sẵn:
- Phương thức Equals (phương thức dùng để so sánh 2 đối tượng).
- Phương thức ToString (Phương thức chuyển giá trị đối tượng sang chuỗi).
- Phương thức GetHashCode (Phương thức trả về mã băm của một đối tượng, dùng để hỗ trợ so sánh 2 đối tượng).
Từ đó chúng ta chỉ việc sử dụng mà không cần phải viết lại những phương thức này.
Cách sử dụng Tuple
Đầu tiên là khởi tạo một đối tượng Tuplechúng ta có 2 cách:
Cách 1: Thông qua phương thức Create trong lớp Tuple:
Ví dụ trên có nghĩa là tạo ra 1 đối tượng (Tuple) có 2 thuộc tính bên trong:
- Thuộc tính thứ nhất (Item1) có kiểu dữ liệu là int và khởi tạo giá trị là 1.
- Thuộc tính thứ hai (Item2) có kiểu dữ liệu là string và khởi tạo giá trị là “HowKteam”.
Cách 2: Thông qua Constructor của các lớp Generic:
Ví dụ này cũng được hiểu tương tự như trên.
- Khi bạn khởi tạo Tuple có bao nhiêu kiểu dữ liệu thì sẽ có bấy nhiêu thuộc tính Item tương ứng. Hình dưới đây là minh hoạ cho Tuple<T1, T2>:
Ví dụ: in ra giá trị các thuộc tính đã khởi tạo ở trên:
Kết quả: khi chạy chương trình là:
Lúc này ta đã hiểu Tuple cũng chỉ là một lớp bình thường đã được định nghĩa sẵn thôi. Vì vậy để giải quyết bài toán trả về nhiều giá trị cùng một lúc ta đơn giản chỉ cần khai báo kiểu trả về là 1 Tuple mà thôi.
Ví dụ về tuple
Xét ví dụ sau: Viết chương trình trả về 3 giá trị là ngày, tháng, năm hiện tại của hệ thống.
- Đầu tiên mình sẽ viết phương thức trả về 3 giá trị ngày, tháng, năm:
- Trong chương trình chính ta gọi và sử dụng như sau:
- Kết quả khi chạy chương trình là:
Các bạn có thể thử không gọi Item1, Item2, Item3 mà sử dụng phương thức ToString() để xem kết quả thế nào nhé!
Lưu ý: Các thuộc tính Item1, Item2, Item3,… là các thuộc tính chỉ đọc nghĩa là bạn chỉ có thể gọi ra để lấy giá trị chứ không thể gán giá trị cho chúng được.
Kết luận
Nội dung bài này giúp các bạn nắm được:
- Tuple là gì?
- Cách sử dụng Tuple.
Bài học sau chúng ta sẽ cùng tìm hiểu về ICOLLECTION TRONG C#.
Cảm ơn các bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của mình để phát triển bài viết tốt hơn. Đừng quên “Luyện tập – Thử thách – Không ngại khó”.
Tải xuống
Tài liệu
Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học Tuple trong C# dưới dạng file PDF trong link bên dưới.
Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com
Đừng quên like và share để ủng hộ Kteam và tác giả nhé!

Thảo luận
Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.
Tác giả/Dịch giả
Khóa học
Khóa học lập trình C# nâng cao
Bạn đã học hết các khoá học về C# CƠ BẢN, LẬP TRÌNH WINFORM thậm chí là LẬP TRÌNH WPF nhưng vẫn bối rối trước những hướng dẫn về CÁC PROJECT THỰC TẾ của Kteam?
Hoặc bạn nghe nói mãi về .NET nhưng vẫn thắc mắc nó có gì hay ho bên trong đó?
Hay đơn giản bạn viết muốn 1 đoạn code cực kỳ nguy hiểm khiến người khác khi nhìn vào phải thốt lên: “Ồ!!!......... Trẻ trâu…”
Khoá học lần này sẽ giúp bạn giải đáp những thắc mắc trên. Chào mừng các bạn đã đến với khoá học Lập trình C# nâng cao của Kteam.
Ad cho em xin nhiều thêm nhiều ứng dụng thực tế được k ạ, em cám ơn