C# 是否可以将运算符添加到类中?
查看UML图像。我有一个叫做BinaryProblem的泛型类,这个类接收两个T值,int long,decimal。但我决定增加一个新的,分数类 假设我有一个叫做加法、减法、乘法和除法的方法。我想做这样的事C# 是否可以将运算符添加到类中?,c#,C#,查看UML图像。我有一个叫做BinaryProblem的泛型类,这个类接收两个T值,int long,decimal。但我决定增加一个新的,分数类 假设我有一个叫做加法、减法、乘法和除法的方法。我想做这样的事 var a = new Fraction(1 / 2); var b = new Fraction(3 / 4); var c = a + b; // Fraction { Numerator = 5, Denominator = 4 } 我知道,如果(x.GetType()===
var a = new Fraction(1 / 2);
var b = new Fraction(3 / 4);
var c = a + b; // Fraction { Numerator = 5, Denominator = 4 }
我知道,如果(x.GetType()===…)的话,只能设置一个条件,但我确信以后我会添加其他类型,并避免重复一些代码
我几乎忘了,可以在类型为泛型的情况下添加数字吗?听起来好像您正试图将运算符+添加到
分数类型中。如果是这样,请尝试以下方法
class Fraction {
public static Fraction operator+(Fraction left, Fraction right) {
return left.Add(right);
}
public static Fraction operator+(Fraction left, int right) {
var right = new Fraction(right);
return left.Add(right);
}
}
听起来好像您正试图将运算符+添加到分数
类型中。如果是这样,请尝试以下方法
class Fraction {
public static Fraction operator+(Fraction left, Fraction right) {
return left.Add(right);
}
public static Fraction operator+(Fraction left, int right) {
var right = new Fraction(right);
return left.Add(right);
}
}
我就是这么想的,但是二进制问题
在做什么呢?@JaredPar哇,你真快!顺便说一句,我忘了写一些东西,可以在值类型为T的地方添加数字吗?@JonathonReinhart不确定。我在等OP来纠正我的问题。不过,代码示例似乎直接调用了这个函数。BinaryProblem只是一个类,只有当T
是一个具体类型,如int
,或者是类型Fraction
上的一个类型参数(或父类型)时,才执行+、-、*、或/@DarfZon等算术运算。操作符本身不能是泛型的。这就是我所想的,但是BinaryProblem
在做什么呢?@JaredPar哇,你真快!顺便说一句,我忘了写一些东西,可以在值类型为T的地方添加数字吗?@JonathonReinhart不确定。我在等OP来纠正我的问题。不过,代码示例似乎直接调用了这个函数。BinaryProblem只是一个类,只有当T
是一个具体类型,如int
,或者是类型Fraction
上的一个类型参数(或父类型)时,才执行+、-、*、或/@DarfZon等算术运算。运算符本身不能是泛型的。