Kiểu dữ liệu Tuple trong C#

Tram Ho

Vì sao mình giới thiệu về Tuple?

Trong khi làm việc mình đã từng gặp nhiều trường hợp phương thức chúng ta muốn trả về một giá trị, khi phát sinh hay muốn trả về thêm những giá trị nữa thì mình buộc thế phải tạo riêng một object chứa nhiều giá trị đó vào rồi trả về object đó (tức là mình sẽ phải thay đổi kiểu data trả về) và những trường hợp đó chỉ sử dụng object đó 1 lần chẳng hạn như maintain một sourcecode của người khác và ngại việc thay đổi đó thì hãy sử dùng Tuple.

Tuple là gì?

Tuple được giới thiệu từ .NET Framwork 4.0, 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 tạm thời mà không cần phải tạo ra một object class mới.

Mỗi Tuple định nghĩa sẵn các item1, item2,… Có tối đa 8 items được định nghĩa.

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

Trên đây kiows Tuple<T1, T2, T3, T4, T5, T6, T7, T8, TRest> khi ta truyền kiểu dữ liệu vào thì sẽ map tương ứng với các property Item1, Item2, Item3, Item4, Item5 …

Cách dùng Tuple?

Khởi tạo đối tượng Tuple có 2 cách:

  • Tạo qua phương thức Create trong class Tuple:

  • Tạo qua hàm dựng khởi tạo Constructor:

Lấy giá trị từ Tuple

Tuple lồng

Nếu bạn muốn bao gồm nhiều hơn tám phần tử trong một tuple, bạn có thể làm điều đó bằng cách lồng một đối tượng tuple khác làm phần tử thứ tám. Bộ dữ liệu lồng nhau cuối cùng có thể được truy cập bằng thuộc tính Rest. Để lấy giá trị từ tuple lồng đó thì dùng lệnh Rest.Item1.Item<elelementNumber>

Bạn có thể đặt các đối tượng tuple lồng nhau ở bất cứ đâu trong chuỗi. Tuy nhiên, nên đặt bộ dữ liệu lồng vào cuối chuỗi để có thể truy cập bằng thuộc tính Rest.

Tuple được dùng giống như một Method parameter

Tuple được dùng giống như một kiểu trả về

Kết luận.

Bạn nên dùng Tuple trong những tình huống sau:

  • Khi bạn muốn trả về nhiều giá trị từ một phương thức mà không muốn sử dụng ref hoặc là out parameters
  • Khi bạn muốn truyền nhiều giá trị cho một phương thức thông qua một tham số
  • Khi bạn muốn giữ một bản ghi cơ sở dữ liệu hoặc một số giá trị tạm thời mà không tạo một lớp riêng

Bạn không nên dùng Tuple trong những tình huống sau:

  • Tuple là một kiểu dữ liệu tham chiếu chứ không phải tham trị. Nên việc dùng không đúng có thể ảnh hưởng đến CPU
  • Tuple được giới hạn bao gồm 8 yếu tố. Bạn cần sử dụng các bộ dữ liệu lồng nhau nếu bạn cần lưu trữ nhiều phần tử hơn. Tuy nhiên, điều này có thể dẫn đến sự lẫn lộn trong khi làm việc
  • Trong quá trình lấy dữ liệu từ tuple có sử dụng những tên thuộc tính như Items1, Items2 nhìn có vẻ không tường minh lắm. Sẽ gây khó khăn cho người thứ 2 đọc vào code trong quá trình sau này.

Chúc mọi người làm việc thật tốt . 😃

Bài viết tham khảo từ nguồn:
https://docs.microsoft.com/en-us/dotnet/csharp/tuples

https://www.tutorialsteacher.com/csharp/csharp-tuple

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo