c# -操作符返回类型

本文关键字:返回类型 操作符 | 更新日期: 2023-09-27 17:49:40

我需要做一些数学运算,比如:a+b, a-b, a/b, a*b等等。

我想知道是否存在Operator返回类型,所以当我调用方法(返回操作符)时使用返回的数据(即操作符)。

If不存在,如何从字符串中获得该操作符?例如:

string myOperator = "+";
int a = 5, b = 10;
int outcome = 0;

我需要做:

outcome = a + b;

我需要这个+运算符。我应该用什么作为返回类型如果我创建一个方法给我那个运算符?

c# -操作符返回类型

不,操作符没有返回类型。但是,您可以使用Func<T1,T2,R>来创建一个具有操作符行为但具有函数语法的函子。

Func<int,int,int> myOperator1 = (x,y) => (x+y);
Func<int,int,int> myOperator2 = (x,y) => (x-y);
int a = 5, b = 10;
int outcome1 = myOperator1(a, b); // Returns 15
int outcome2 = myOperator2(a, b); // Returns -5

c#中没有这样的操作符返回类型。您需要在c#中手动解析操作符。请参阅此http://www.c-sharpcorner.com/UploadFile/patricklundin/MathExpParser12062005062213AM/MathExpParser.aspx或创建您自己的解析器。

 int a = 3, b = 7;
 Operator(a, b, "+"); // 10
int Operator (int op1, int op2, string op)
{
    if (op == "+") return op1 + op2;
    if (op == "-") return op1 - op2;
    if (op == "*") return op1 * op2;
    if (op == "/") return op1 / op2;
    throw new ArgumentException("Specify a valid operator", "op");
}

你的问题是…我如何解析我的预期操作符,表示为字符串?

严重过度简化了……但也许是这样的?

int fuzzyMath(int a, int b, string literalOperator) {
     string cleanedOperator = literalOperator.Trim();
     if ("+".Equals(cleanedOperator )) {
          return a+b;
     } else if ("-".Equals(cleanedOperator )) {
          return a-b;
     } //and so on
}

我不确定你是否可以将操作符派生为可以在表达式中自由使用的类型或值,但你可以测试预期的文字值并基于此计算…