【发布时间】:2016-12-30 05:24:57
【问题描述】:
我是 C# 的新手。我需要创建一个通用类。还应该有一个约束:“客户端可以通过 Int 或 Float 类实现”。 包含将返回总计的“totalNums”方法。
通用类
public class clsPrint<T>
{
public T totalNums(T num1, T num2)
{
T Total = num1 + num2;
return Total;
}
}
“Num1 + Num2”上的编译时错误:运算符“+”不能应用于“T”和“T”类型的操作数。
为什么我会收到此错误以及解决方案是什么?
【问题讨论】:
-
写泛型的时候,
T在你写代码的时候基本就当成object了。因此,object + object没有任何语法意义。 -
那么,有没有其他方法可以实现呢? @Abion47
-
严格来说,有一种使用反射和抽象的方法(参见我的重复评论),但它非常难看。一般来说,我建议不要为此使用泛型,而是使用两种不同的方法重载:一种采用
int参数,另一种采用float参数。 -
谢谢。实际上,我想练习通用课程。于是想到了这个想法。
-
一开始就不要这样做。如果它只能用 int 和 float 实例化,那么它不是 generic。只需创建两个类,一个用于 int 操作,一个用于 float 操作。