下面类NewObject定义中,“T”与其方法display<T>中的“T”是同一类型的吗?如果是,为什么Main里面的语句能使用不同的数据类型?using System;namespace MySpace
{    class NewObject<T>
    {
        public void display<T>(T value)
        {
            Console.WriteLine("{0}",value);
        }
    }    public class TestMethodTTwo
    {
        
        public static void Main()
        {
            NewObject<string> myob = new NewObject<string>();
            myob.display<string>("hello");
            myob.display<int>(3);
            myob.display<float>((float)3.3);
            Console.ReadLine();
        }
    }
}

解决方案 »

  1.   

    http://topic.csdn.net/u/20090622/21/df7f7b8a-61cd-4c8f-a964-0fe15377523d.html?60357
      

  2.   

    class NewObject <T> 
        { 
            public void display <T>(T value) 
            { 
                Console.WriteLine("{0}",value); 
            } 
        } 
    你这样定义没出错吗???两个名字一样
    那只是一个占位符,
    换成其他的就不会了,
      

  3.   

        class NewObject <T> 
        { 
            public void display <U>(U value) 
            { 
                Console.WriteLine("{0}",value); 
            } 
        } 
    这样当然可以其他类型!!!
      

  4.   

    to 4 楼 当然知道"T"没有其它意义,只是代表参数某种类型而已。
    to 7楼
    想问的就是“泛型类”所带的"T"与其里面方法display<T>中的"T"有何关系,而不是两种不同的泛型(都是“T”,而不是“T”与“U”)。
    to 5楼
    泛型的知识还只是初学,谢谢你提供的资料。
      

  5.   

    class NewObject<T>where T:IComparable
    {
        public void display<T>(T value)where T:IList<T>
        {
            Console.WriteLine("{0}", value);
        }
    }
    在方法里输入value,然后输入.,可以从智能感知看到,value的类型是方法里的T,而非类型里的T,所以两个T是不一样的
      

  6.   

    有两个<?>定义,相当于
    class NewObject <T1> 
        { 
            public void display <T2>(T2 value) 
            { 
                Console.WriteLine("{0}",value); 
            } 
        }
      

  7.   

            class NewObject<T>
            {
                public void display<T>(T value)
                {
                    Console.WriteLine("{0}", value);
                }            public T GET(T VALUE)
                {
                    return VALUE;
                }
            } 如果换成属性,那样就不行了!!!
    不过同名会有警告,呵呵,弄错了,还说是报错!!!VALUE中的T应该是方法中的T,