3 回答
TA贡献1833条经验 获得超4个赞
这是你想要做的:
class Program
{
public static T Adds<T>(object number1, object number2)
{
if ((number1 is int) && (number2 is int))
{
Console.WriteLine("int test");
}
else if (number1 is double)
{
Console.WriteLine("double test");
}
return (T)Convert.ChangeType(number1, typeof(T));
}
public static void Main(string[] args)
{
Console.WriteLine(Adds<int>('c', 2));
}
}
TA贡献1848条经验 获得超2个赞
当前签名
T Adds<T>(T number1, T number2)
确保两个参数number1和number2必须是相同的类型。这就是为什么
Add('c', 2)
Add(1, 3.14)
将被执行为
Add<int>((int)'c', 2);
Add<double>((double)1, 3.14);
因为char可以隐式转换为int并且(第二个示例)int可以 隐式转换为double. 如果你想用自己的类型来对待每个参数,试试
// T1 Adds<T1, T2>: if Adds return 1st parameter
// T2 Adds<T1, T2>: if Adds return 2nd parameter
T1 Adds<T1, T2>(T1 number1, T2 number2) {
...
}
在这种情况下
Add('c', 2)
将被称为
// No conversion: T1 is char, T2 is int
Add<char, int>('c', 2)
TA贡献1836条经验 获得超5个赞
您已使用单个泛型类型声明了该方法。如果您希望参数具有单独的类型,则必须声明
public static T Adds<T,T2>(T number1 , T2 number2 )
- 3 回答
- 0 关注
- 176 浏览
添加回答
举报