Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否可以将运算符添加到类中?_C# - Fatal编程技术网

C# 是否可以将运算符添加到类中?

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()===

查看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()===…)的话,只能设置一个条件,但我确信以后我会添加其他类型,并避免重复一些代码


我几乎忘了,可以在类型为泛型的情况下添加数字吗?

听起来好像您正试图将运算符+添加到
分数类型中。如果是这样,请尝试以下方法

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等算术运算。运算符本身不能是泛型的。