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());
}
}
答案 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);
}
}