当前位置: 代码迷 >> C# >> 问一个关于泛型List<T> 的有关问题
  详细解决方案

问一个关于泛型List<T> 的有关问题

热度:24   发布时间:2016-05-05 04:47:20.0
问一个关于泛型List<T> 的问题
我有两个方法 分别返回两个类型的 集合
第一个 List<int> GetIndexList()...
第二个List<string> GetTextList()...

我在重构的时候 发现 这两个方法体过程完全一样 就是 读出的数据一个是整形 一个是字符串
我想把这两个方法的过程抽象出来 然后通过传类型 进去 让两个方法返回一个整形集合 一个string集合 
我该怎么做呢? 
------解决思路----------------------
加个参数呗
比如
List<T> GetITList(string type)
{
switch(type)
{
case "int":
return new List<int>();
break;
case "string":
return new List<string>();
break;
}
}
------解决思路----------------------

引用:
我现在这样做的 编译通过 但是读数据时候发现数据格式不对

List<T> GetList<T>()
{
        List<T> result = (T) dataTable.....
        return result;
}

List<int> GetIntList = GetList<int>();
List<string> GetTextList = GetList<string>();
编译通过的 实际读不到数据NULL 值

List<T> 要实例化..
------解决思路----------------------
貌似 datable 不能强转T..
------解决思路----------------------
引用:
或者你这样定义
void GetITList(ref List<T> list)
{
//在外面new好,传递进来,根据对应的类型进行填充
}


这个应该可以
------解决思路----------------------
List<T> Function<T>();
试试这样
------解决思路----------------------
用泛型存储不同类型的数据
 class Types<T>
        {
            public T Num; //声明编号字段 
            public T Name; //声明姓名字段 
            public T Sex; //声明性别字段 
            public T Age; //声明年龄字段 
            public T Birthday; //声明生日字段 
            public T Salary; //声明薪水字段 
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Types<object> Exte = new Types<object>();//实例化泛型类对象
            //为泛型类中声明的字段进行赋值,存储不同类型的值
            Exte.Num = 1;
            Exte.Name = "白显明";
            Exte.Sex = "女";
            Exte.Age = 25;
            Exte.Birthday = Convert.ToDateTime("1986-06-08");
            Exte.Salary = 1300.45F;
            //将泛型类中各字段的值显示在文本框中
            textBox1.Text = Exte.Num.ToString();
            textBox2.Text = Exte.Name.ToString();
            textBox3.Text = Exte.Sex.ToString();
            textBox4.Text = Exte.Age.ToString();
            textBox5.Text = Exte.Birthday.ToString();
            textBox6.Text = Exte.Salary.ToString();
        }
    }

------解决思路----------------------
引用:
我想先打好框架,然后 调用的时候通过 传参数或者 转换 让List<T> 装载具体的类型 这样可以省去很多同样重复的代码了。

你所谓的“框架”是没有根据的、只基于皮毛的想像就“搭框架”,这样出来的东西,聪明人只会等着看笑话啊。

你要能说出来 DataTable 如何转为int、string,你再来搭所谓的“框架”。如果稍微深入一步追问,你就胡乱写代码了,那么你这不就好像是“南郭先生”一样的做法了嘛。

“打好框架”,前提是有坚实的基础。框架的重构和扩展,实在已经成功的基础框架之上重构的,绝不是在标题党之上去构建的。
  相关解决方案