C#范型默认类型
C#范型默认类型
梦想游戏人 发表于1年前
C#范型默认类型
  • 发表于 1年前
  • 阅读 15
  • 收藏 0
  • 点赞 0
  • 评论 0

移动开发云端新模式探索实践 >>>   

语法糖,这种方法使用起来和默认范型参数用法是一样的 类似于C++模板特化

HashTable 默认类型就是string 

/*
* Author:  caoshanshan
* Email:   me@dreamyouxi.com

 */
using UnityEngine;
using System.Collections;

public sealed class HashTable
{

    public static HashTable Create()
    {
        HashTable ret = new HashTable();
        return ret;
    }

    public static HashTable CreateWithJson(string json)
    {
        return Json.Decode(json);
    }
    private HashTable() { }
    private Hashtable kv = new Hashtable();

    public int GetInt(string key)
    {
        return int.Parse(this.Get(key));
    }

    public float GetFloat(string key)
    {
        return float.Parse(this.Get(key));
    }

    public void Set(string key, string value)
    {
        if (kv.Contains(key))
        {
            kv[key] = value; return;
        }
        kv.Add(key, value);
    }
    public string this[string key]
    {
        get
        {
            return this.Get(key);
        }

        set
        {
            this.Set(key, value);
        }
    }
    public string Get(string key)
    {
        if (kv.Contains(key))
        {
            return kv[key] as string;
        }
        return "";
    }
    public int Count
    {
        get
        {
            return kv.Count;
        }
    }

    public Hashtable GetHashtable()
    {
        return kv;
    }

    public string ToJson()
    {
        return Json.Encode(this);
    }
}

public sealed class HashTable<T>/// where T : class,new()
{

    public static HashTable<T> Create<T>()
    {
        HashTable<T> ret = new HashTable<T>();
        return ret;
    }

    public static HashTable<T> CreateWithJson<T>(string json)
    {
        return null;// Json.Decode(json);
    }

    private Hashtable kv = new Hashtable();

    public T Get<T>(string key)
    {
        return (T)(this.Get(key)) ;
    }

    public void Set(string key, object value)
    {
        if (kv.Contains(key))
        {
            kv[key] = value; return;
        }
        kv.Add(key, value);
    }
    public object this[string key]
    {
        get
        {
            return this.Get(key);
        }

        set
        {
            this.Set(key, value);
        }
    }
    public object Get(string key)
    {
        if (kv.Contains(key))
        {
            return kv[key];
        }
        return null;
    }
    public int Count
    {
        get
        {
            return kv.Count;
        }
    }

    public Hashtable GetHashtable()
    {
        return kv;
    }

    public string ToJson()
    {
        return "";// Json.Encode(this as hASH);
    }
}

 

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 34
博文 401
码字总数 115368
×
梦想游戏人
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: