Tuple trong C#

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

5.0 (2 đánh giá)
Tạo bởi Kteam Cập nhật lần cuối 5 năm trước 37.036 lượt xem 1 bình luận
Tác giả/Dịch giả: Kteam
Học nhanh

Danh sách bài học

Tuple trong C#

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:

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#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ụ:

Tuple trong C#

Đâ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:

Tuple trong C#

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>:

Tuple trong C#

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à:

Tuple trong C#

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à:

Tuple trong C#

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 likeshare để ủng hộ Kteam và tác giả nhé!

Project

Nếu việc thực hành theo hướng dẫn không diễn ra suôn sẻ như mong muốn. Bạn cũng có thể tải xuống PROJECT THAM KHẢO ở link bên dưới!


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.

Đánh giá

tuannva đã đánh giá 6 năm trước

builehoangnhattruong đã đánh giá 6 năm trước

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
Tri4548 đã bình luận 4 năm trước

Ad cho em xin nhiều thêm nhiều ứng dụng thực tế được k ạ, em cám ơn

Không có video.