void SomeMethod(T t)
   
   {
      object temp = t;
      SomeClass obj = (SomeClass)temp;
   
   }
一定要输入T型的吗,如果我输入的参数不是T型的,会有什么结果呢?

解决方案 »

  1.   

    怎么看怎么不对劲啊.这是泛型吗?<T>这种才是吧..就跟C++中的模板一样.
    不是说参数是T型的,而是任何类型都可以当做参数.
      

  2.   

    System.Collections.Generic Namespace
      

  3.   

    和专用类型相对就是泛型了.
    这里的T实际上是一个Type的意思,你可以使用任何类型,但一旦确定了这个类型,程序就按指定类型处理了.
      

  4.   

    可以参考如下的使用:
    void SomeMethod<T>(T t)
    {
    object temp = t;
    Form1 obj = (Form1)temp;
    }
    private void button1_Click(object sender, EventArgs e)
    {
    this.SomeMethod<Form>(this);
    }
      

  5.   

    T只是一个占位付而已。范型类似与c++的模板,但是在实现机制上面有点不同,c++没有Metadata,所以对于你每次对函数的实现,会插入每套类型的代码,而.net只有一个占位付而已。T适合于任何类型。
    在没有范型的时候,你函数的定义为了适合很多情况,所以必定参数为Object t,对于int,float等primitive类型,你就要承担boxing,unboxing的代价。