如何从char中获取+ - / *

时间:2018-04-03 09:39:43

标签: c# visual-studio char symbols

我知道如何在C#int g += 5;中使用此语法 如果我有h = '+';g h= 5;的话,我该如何做同样的事情 或var j = Convert.ToSymbol(h)以及g j= 5;

之后

如果不使用开关案例

1 个答案:

答案 0 :(得分:2)

C#在运行时没有内置的处理符号的方法。不是每种语言都有LISP :)

在一般情况下,您正在谈论编译器 - 将代码作为输入并生成可执行文件的东西。有很多方法可以在C#中调用C#编译器,并且它们很容易找到,所以我不会深入研究它 - 它可能是一个巨大的矫枉过正,并提出许多安全问题。如果你完全使用运行时代码生成,Expression可能是安全性和灵活性之间的妥协。

在更具体的情况下,您确实希望以您希望的方式定义您的操作,这使您可以完全控制您允许用户的操作(无论是实时用户还是某些脚本,没有区别)。

事实上,对于像这样简单的事情,简单的switch是最清晰的解决方案。如果你想扩展到一个完整的领域特定语言,它不能很好地扩展,但它不需要任何特殊的知识(例如编译器理论) - 只做最简单的工作。

switch (operator)
{
  case '+': return op1 + op2;
  case '-': return op1 - op2;
  ...
}

不要让事情变得比他们需要的更复杂。特别是在运行时代码生成或评估等方面:)