泛型类和泛型方法

时间:2009-05-05 22:42:15

标签: c# generics

class test <T> where T : class
{
    public void Write<T>()
    {
        Console.Write(typeof(T).FullName);
    }
}

在上面的类中,可以为类(test<string> Test = new test<string>)传递一个字符串,然后为方法传入int?如果是这样,输出是什么?如果没有,这会导致什么问题?尽管经常使用泛型(在我自己的类中)和泛型集合,我还没有尝试过这个。

我编写/查看泛型类的方式如下:

class <T> where T : class
{
    public T Write()
    {
        Console.Write(T.ToString());
    }
}

2 个答案:

答案 0 :(得分:3)

因为它最初写的不是你不能。要在类中的不同点使用不同类型,您必须具有多个通用参数。可以在方法级别定义不同的一个并使您的样本正常工作

class Test<T> where T : class {
  public void Write<U>(U arg1) {
    Console.WriteLine(arg1.ToString());
  }
}

用法

var t = new Test<string>();
t.Write(42);

Scott指出你可以使用相同的命名参数。虽然这样做会引起警告,一般来说会让人感到困惑。为当前范围内的所有通用参数设置不同的名称要清晰得多。

答案 1 :(得分:0)

您希望将方法中的类型变量分别声明为类 -

class Test<T> where T : class {

    public void Method<U>(U val) {
        Console.WriteLine(typeof(U).FullName);
    }

}