请问关于泛型方法的重载

cygzappo 2007-10-01 12:02:46
如果使用泛型方法重载的话,使用哪个方法取决于调用方法时指定的泛型类型参数个数。
public void ProcessT<T>(T op1)
{
}
public void ProcessT<T,U>(T op1)
{
}
那么如果打算使用一个泛型类型参数,但一种是用INT,还有一种是string型的,如何决定使用哪一种方法呢?
...全文
174 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
真相重于对错 2007-10-01
  • 打赏
  • 举报
回复
泛型函数,类只有和确定的参数结合,才能确定具体调用
所以你提供一个模版参数的话,调用第一个
提供两个调用二个
兔子-顾问 2007-10-01
  • 打赏
  • 举报
回复

public void ProcessT <T >(T op1)
{
}
public void ProcessT <T,U >(T op1)
{
}

string op= string.Empty;
ProcessT<string>(op);//使用public void ProcessT <T>(T op1)
ProcessT<string,int>(op);//使用public void ProcessT <T,U >(T op1)
兔子-顾问 2007-10-01
  • 打赏
  • 举报
回复
看来不能这样写。的确不能,这个情况下不适合用泛型。用泛型是要尽可能的和类型特性无关的。比如List,Queue,Stack这些。
兔子-顾问 2007-10-01
  • 打赏
  • 举报
回复
如果按你说的,是可以的,因为泛型是可以约束的

public void ProcessT <T >(T op1) where ValueType,ToString()
{
T number += op1;
Console.WriteLine(number.ToString());
}

是否可以执行就不一定了。呵呵。估计可以。
cygzappo 2007-10-01
  • 打赏
  • 举报
回复
是不是可疑理解为:如果要在方法体内使用两个不同的标识符,就要使用public void ProcessT <T,U >(T op1)
如果使用一个标识符,就用public void ProcessT <T>(T op1)。


int number = 0;

public void Process (int op1)
{
number += op1;
}

public void Process (string op1)
{
Console.Writeline(op1);
}

这两个函数不能转变成一个public void ProcessT <T>(T op1)吧?

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧