using System;
using System.Text;
using System.Collections;namespace Test
{
    class MainEntryPoint
    {
        static void Main()
        {
            MainEntryPoint m = new MainEntryPoint();
            m.PrintModel<Model>(111111);
        }        void PrintModel<T>(int code)
            where T:Model, new()
        {
            T modelT = new T(code); //为什么这里出错?
            Console.WriteLine(modelT.Code.ToString());
        }
    }    class Model
    {
        private int _code;
        private string _name;        public Model()
        { }        public Model(int code)
        {
            _code = code;
        }        public int Code
        {
            get { return _code; }
            set { _code = value; }
        }
    }}

解决方案 »

  1.   

    我不知道你写这段代码的具体用途,但从泛型的角度看,T只是你声明这个方法中的数据类型的占位符,只有你真正调用这个方法时,给出了具体类型,编译器才知道T到底是什么,换句话说就是在你程序出错的地方,编译器也不知道T是什么数据类型,虽然你限制了T的范围,但它毕竟还不是一个确定的类型,所以你New一个编译器不知道的类型,肯定会出错的。