rt
public T getValue<T>(T t)没见人用过,也没找到什么资料

解决方案 »

  1.   

    List<T>
    回复内容太短太内涵了。
      

  2.   

    问题标题是没有答案。用什么,如何用?都是看情况而言的而问题内容
    public T getValue <T>(T t) 这样的定义通常使用在父子类转换,或接口转换中
    比如:getValue<int>(1);

    getValue<Ixxx接口>(某个实现了Ixxx接口的对象实例)
      

  3.   


    List<T>. IndexOf(T item)
    回复不短也不内涵了。
      

  4.   

    参数化类型 类型不确定的时候 你可能用的是object 用泛型可以提高效率
      

  5.   

    既然类型不确定,我在方法中如何处理这个参数呢,比如想达到下面效果 public T getValue<T>(T t) {
    if (t is int) {
    return t * 2;
    } else if(t is string){
    return t + "A";
    }
    }
      

  6.   

    这种声明方式,实际是现在一个很流行的概念IOC(控制翻转)的基本实现过程IOC(控制翻转)既把对象转换过程,交由代码去自己完成,而不是手动用代码去实现。这样可以另一个东西既依赖注入。
    如果想深入了解,大可以google一下:Ioc容器http://www.google.cn/search?client=pub-5434506002917399&prog=aff&channel=2000052003&q=Ioc%E5%AE%B9%E5%99%A8
      

  7.   

    如果是普通方法.类型不定的时候你需要写以下三个方法:
    字符串:Public string GetValue(string a)
    整型:Public int GetValue(int a)
    Object:Public Object GetValue(Object a)
    而采用泛型就不需要了,只要在实现的时候指定
    例如类:    class c1
        {
            public T getValue<T>(T t)
            {
                T ret = default(T);
                ret = t;
                return ret;
            }
        }
    调用:            string s = t.getValue<string>("A");
                int i = t.getValue<int>(1);
                object o = t.getValue<object>(new object());
    例子很简单,但是能够说明问题了.
      

  8.   

    总结一下用法
    1.IOC(控制翻转),这个应算高级用法了
    2.避免重载函数(如果函数过程比较复杂,这样做有意义吗)有没有人真正在项目中用过泛型方法,望指点,另外13楼说的精华帖,实在没找到昨天反编译看了下List<T>//大概就是这样了
    T[] _items;
    void Add(T t){
        _items[size++] = t;
    }
      

  9.   


    这个结论让我非常无语,泛型出之于c++的stl。当初stl的目的可不是为了装拆箱,c++那回根本就没有装拆箱的概念
      

  10.   

    public class MappingData
        {
            public MappingData()
            {        }        public T MappdingDataRow<T>(DataRow row)
                where T : new()
            {
                T t = new T();
                foreach (PropertyInfo p in t.GetType().GetProperties())
                {
                    p.SetValue(t, row[p.Name], null);
                }
                return t;
            }        public  List<T> MappdingDataTable<T>(DataTable table)
                where T : new()
            {
                T t = new T();
                List<T> list = new List<T>();            foreach (DataRow row in table.Rows)
                {
                    t = this.MappdingDataRow<T>(row);
                    list.Add(t);
                }
                return list;
            }
        }
    一个简单的泛型类的应用是循环DataTable里的数据到实体类里面的,实体类就是 T,访问元数据填充这个泛型实体,
    ,持久层和反射的话可能也用到泛型类,还有泛型方法和泛型集合等可以限制参数类型安全等,也可以去msdn查找看看
      

  11.   

    其实C#的泛型与C++的stl还是有区别的,宏观来看泛型是被这样用了
      

  12.   

    并不是只要方法属于泛型类型,或者甚至是方法的形参的类型是封闭类型的泛型参数,就可以说方法是泛型方法。只有当方法具有它自己的类型参数列表时,才能称其为泛型方法。在下面的代码中,只有方法 G 是泛型方法。class A 
    {
        T G<T>(T arg) {...}
    }
    class Generic<T> 
    {
        T M(T arg) {...}
    }红字部分什么意思,没太读懂
      

  13.   


    .net的泛型确实是为 优化拆箱装箱而设计的。因为是2005才有的特性,2003不具备泛型。c++我没用过,没有发言权。但如果是为了继承C++的特性的话,那我想应该在2003就开始启用。正是2003里大量拆装箱操作 让MS意识到自己该做点什么了。所以才有了2005的泛型。
    当然,我是这样看的,仅仅代表我的看法。