Làm việc với Hashtable trong Unity

Hashtable là tập hợp các cặp khóa-giá trị cho phép bạn lưu trữ và truy xuất dữ liệu hiệu quả. Mỗi khóa trong Hashtable phải là duy nhất và được sử dụng để truy cập giá trị tương ứng. Trong Unity, Hashtable là một phần của không gian tên System.Collections và có thể đặc biệt hữu ích để lưu trữ các cấu trúc dữ liệu không chung chung.

Tạo một Hashtable

Để sử dụng Hashtable trong Unity, trước tiên bạn cần nhập không gian tên System.Collections rồi khởi tạo đối tượng Hashtable mới. Sau đây là ví dụ:

using System.Collections;
using UnityEngine;

public class HashtableExample : MonoBehaviour
{
    void Start()
    {
        Hashtable myHashtable = new Hashtable();

        // Adding key-value pairs
        myHashtable.Add("PlayerName", "Alex");
        myHashtable.Add("Score", 1500);
        myHashtable.Add("Level", 5);

        // Accessing values
        Debug.Log("Player Name: " + myHashtable["PlayerName"]);
        Debug.Log("Score: " + myHashtable["Score"]);
        Debug.Log("Level: " + myHashtable["Level"]);
    }
}

Thêm và Truy cập Dữ liệu

Bạn có thể thêm dữ liệu vào Hashtable bằng phương thức Add. Để lấy giá trị, hãy sử dụng khóa trong dấu ngoặc vuông:

myHashtable.Add("Health", 100);
int health = (int)myHashtable["Health"];
Debug.Log("Health: " + health);

Nếu khóa đã tồn tại, việc cố gắng sử dụng Add sẽ ném ra ngoại lệ. Thay vào đó, hãy sử dụng khóa trực tiếp để cập nhật giá trị:

myHashtable["Health"] = 80; // Updates the value associated with the key

Kiểm tra khóa và giá trị

Để kiểm tra xem khóa có tồn tại trong Hashtable hay không, hãy sử dụng phương thức ContainsKey. Tương tự, hãy sử dụng ContainsValue để kiểm tra giá trị:

if (myHashtable.ContainsKey("Score"))
{
    Debug.Log("Score exists: " + myHashtable["Score"]);
}

if (myHashtable.ContainsValue(1500))
{
    Debug.Log("Value 1500 is in the Hashtable.");
}

Xóa dữ liệu

Bạn có thể xóa một mục khỏi Hashtable bằng phương thức Remove:

myHashtable.Remove("Level");
Debug.Log("Level removed.");

Lặp lại qua một Hashtable

Để lặp qua tất cả các cặp khóa-giá trị trong Hashtable, hãy sử dụng vòng lặp foreach:

foreach (DictionaryEntry entry in myHashtable)
{
    Debug.Log("Key: " + entry.Key + ", Value: " + entry.Value);
}

Hạn chế của Hashtable

Hashtable không phải là generic và thiếu tính an toàn kiểu. Nếu bạn cần tính an toàn và hiệu suất kiểu tốt hơn, hãy cân nhắc sử dụng generic Dictionary từ không gian tên System.Collections.Generic. Hashtable chủ yếu hữu ích khi làm việc với các bộ sưu tập không phải generic hoặc giao tiếp với các cơ sở mã cũ hơn.

Phần kết luận

Hashtable trong Unity cung cấp một cách đơn giản để quản lý các cặp khóa-giá trị trong các dự án của bạn. Mặc dù chúng không phải là loại bộ sưu tập hiện đại nhất, nhưng chúng vẫn là lựa chọn hợp lệ cho nhiều tình huống. Bằng cách hiểu cách tạo, truy cập và thao tác Hashtable, bạn có thể quản lý dữ liệu hiệu quả trong các ứng dụng Unity của mình.