C#关于泛型List<T>的应用

在C#中,泛型是一个经常被使用到的类型,它可以用来处理大量相似逻辑不同类型变量的方法

比如说将数据装为逗号隔开的数据:

  //list<int>存入
    public string PackagingIntList(List<int> intList)
    {
        string str = "";
        for (var idx = 0; idx < intList.Count; idx++)
        {
            if (str != "") str += "," + intList[idx];
            else str = "" + intList[idx];
        }
        return str;
    }

    //list<int>解析
    public List<int> UnpackList(string str)
    {
        List<int> m_list = new List<int>();
        string[] sArray = str.Split(',');
        foreach (string i in sArray)
        {
            m_list.Add(int.Parse(i));
        }
        return m_list;
    }

    //list<int>存入
    public string PackagingStrList(List<string> intList)
    {
        string str = "";
        for (var idx = 0; idx < intList.Count; idx++)
        {
            if (str != "") str += "," + intList[idx];
            else str = "" + intList[idx];
        }
        return str;
    }

    //list<int>解析
    public List<string> UnpackStrList(string str)
    {
        Debug.Log(str);
        List<string> m_list = new List<string>();
        string[] sArray = str.Split(',');
        foreach (string i in sArray)
        {
            m_list.Add(i);
        }
        return m_list;
    }

可以看出这些代码的逻辑基本雷同,如果要加long或者其它类型,会显得代码无比繁琐。

 

而使用泛型的话,我只需要将其合并为两个方法既可:

    /// <summary>
    /// 存入
    /// </summary>
    public string PackagingTList<T>(List<T> _list)
    {
        var _str = "";
        for (var idx = 0; idx < _list.Count; idx++)
        {
            if (_str != "") _str += "," + _list[idx];
            else _str = "" + _list[idx];
        }
        return _str;
    }

    /// <summary>
    /// 解析
    /// </summary>
    public List<T> UnpackList<T>(string _str)
    {
        List<T> m_list = new List<T>();
        string[] _sArray = _str.Split(',');
        foreach (string _i in _sArray)
        {
            T _ret = (T)Convert.ChangeType(_i, typeof(T));
            m_list.Add(_ret);
        }
        return m_list;
    }

 

当然这只是泛型的一个小小的用法,T的引用类为:

using System.Collections.Generic;


版权声明:本文为Tel17610887670原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。