例如
public class Myclass<T>
{
  public void Method<U>(U op1) where U:T
   {
   }
}
我想问的是,为什么泛型方法的函数名后面,还要跟一个泛型参数???
除了可以函数重载以外,还有什么作用???
难道只是为了保持与泛型类定义上形式的统一?就为了美观和好看么?
因为昨天才看的泛型,而且是自学,没人指点。望各位高手解惑。

解决方案 »

  1.   

    “难道只是为了保持与泛型类定义上形式的统一?就为了美观和好看么?”我看不懂你这是何意?!比如说我定一个 Dictionary<T>,它就表达不同的T的实例如何映射为字典类型的规则。比如 Dictionary<string>如何创建,Dictionary<int>如何创建,Dinctiona<List<MyPersonClass>>如何创建,它表达了不同类型如何公用一种代码生成模板来创建新的类型的规则。
      

  2.   

    where T:
    泛型约束,约束类型T必须具有无参的构造函数
    表示T必须是class类型或它的派生类。 
    基本形式: where T : new()  
      

  3.   


    呃,各位大牛太高估我了,我的问题其实非常简单,但是可能我表达的含糊了。
    以我的例子为例,我说的是为什么Method后面要跟一个泛型 U ?参数里面不是有了一个泛型么,U op1 么?
      

  4.   

    似乎明白LZ的意思了ublic void Method<U>(U op1)
    这个是一个构造函数,LZ应该知道吧,函数必须有参数,参数是名是op1,类型是U,这个U是泛型里面给出的,可以是系统的类型,也可以是自定义类型比如以上函数可以这样调用:
    int i=1;
    Method<int>(i);或者Method<string>("Hello");