Hashtable vs Dictionary

Dictionary<TKey, TValue> 類型安全,是較好的選擇

Hashtable

  • 類型安全性
    • Hashtable 繼承 Object
    • Hashtable 非類型安全。存儲鍵和值時以物件形式,取值時需進行類型轉換。
  • 性能
    • 由於需要進行裝箱和拆箱操作,性能相對較慢。
  • 命名空間
    • 位於 System.Collections 命名空間。
  • 適用情況
    • 適用於不需要類型安全或需要維護舊代碼的情況。
Hashtable hashtable = new Hashtable();
hashtable["key"] = "value";
string value = (string)hashtable["key"];  // 需要類型轉換

Dictionary

  • 類型安全性
    • Dictionary<TKey, TValue> 類型安全。編譯時進行類型檢查,避免需要類型轉換。
  • 性能
    • 由於避免裝箱和拆箱,性能優於 Hashtable
  • 命名空間
    • 位於 System.Collections.Generic 命名空間。
  • 適用情況
    • 現代 C# 開發中,推薦使用 Dictionary
Dictionary<string, string> dictionary = new Dictionary<string, string>(); 
dictionary["key"] = "value"; 
string value = dictionary["key"]; // 不需要類型轉換

Unity 中的 Dictionary 示例

using System.Collections.Generic;
using UnityEngine;

public class Example : MonoBehaviour
{
    Dictionary<string, int> scoreDictionary = new Dictionary<string, int>();

    void Start()
    {
        // 添加元素
        scoreDictionary.Add("Player1", 100);
        scoreDictionary.Add("Player2", 150);

        // 訪問元素
        int player1Score = scoreDictionary["Player1"];
        Debug.Log("Player1 Score: " + player1Score);

        // 更新元素
        scoreDictionary["Player1"] = 200;
        Debug.Log("Updated Player1 Score: " + scoreDictionary["Player1"]);
    }
}

此範例展示了如何使用 Dictionary 存儲和管理玩家得分,顯示了其類型安全和使用便利性。

參考資料

Tags: