泛型定义跟实例化的一些疑问

泛型定义和实例化的一些疑问
泛型定义的时候用的是占位符,但是如果实例化的时候就变成了类List集合么
------解决方案--------------------
如果用点位符,解释起来不是太容易懂,楼主可以尝试换一个名词,将泛型类,叫作“模板类”。

当实例化一个“模板类”时,先根据传入的泛型参数,根据“模板”,将类中相应的泛型类型“替换”掉,这样得到了一个非泛型类。
然后再根据这个非泛型类,创建实例。

比如有泛型类定义:

        public class MyTemplate<T>
        {
            public MyTemplate(T value)
            {
                this.Value = value;
            }

            public T Value { get; private set; }
        }


而我们现在要这么用:


            var instance = new MyTemplate<string>("asdf");


可以看到,我们将 string 作为泛型参数,所以我们第一步,按“模版”的方式,将MyTemplate<T>中的T,全部替换成为string。就得到了下面的类:


        //伪代码
        public class MyTemplate<string>
        {
            public MyTemplate(string value)
            {
                this.Value = value;
            }

            public string Value { get; private set; }
        }


之所以要使用泛型类,用于减少重复代码。

如果我们定义了很多个类似的类或者方法 ,而我们发现,这些类或者方法,除了部分参数或者变量的类型不一样之外,其它的代码几乎完全一样,那么意味着我们应该考虑使用泛型类或者泛型方法。
------解决方案--------------------
引用:
Quote: 引用:

什么叫“占位符”,什么叫“如果实例化的时候就变成了类List集合”,这是什么跟什么。

估计你说的“泛型”不是“泛型”,而是特指 List<T> 这个泛型类,但是占位符就真的不知道你想说什么了。


非List<T> 定义的对象 是不是都是有Item的,就是想问这个

反例:
Nullable<T>
Task<T>
ICompareable<T>