逻辑运算符的Case语句

本文关键字:语句 Case 逻辑运算符 | 更新日期: 2023-09-27 17:53:09

我得到"不能隐式地将字符串转换为字符"错误。我正在尝试下面的代码,我应该如何在case语句中为<=操作符指定强制转换。任何帮助/指导都是感激的。谢谢!

char test1;
    switch(test1)
    {
       case '+':
        //do something
        break;
      case '-' : case '*' : case '<=' :
       //method1
       break
    method 1:
    private void method1(char test2)
    {
      if(test2 == '+' || test2 == '*' || test2.ToString() == "<=")
       {
         token.Add(test2.ToString());
       }
    }

好的,我有一个这样的method1:

private void Method1(char test2)
{
  if(test2 == '+' || test2 == '-' || test2 == '/' || test2 == '*')
    {
       //code
       tokens.add(test2);
    }
char test1;
        switch(test1)
        {
           case '+': case '-' : case '*': case '/':
            Method1(test1);
            break;

我试图获得令牌,如果有一个表达式,如(a+b)*(a-b)。这里的Tokens是一个字符串列表。但是,我在这里也要做的是检查逻辑运算符是否存在于表达式中…例如:(a+b)<=5,在本例中,我想检查下一个标记是否为<=,如果是,将其添加到标记列表中,目标是有一个方法来处理所有操作符(+,-,*,/,<=,>=, ==, !=)并在switch case语句中调用它。

逻辑运算符的Case语句

你可以使用actionDictionary来代替switch case语句:

private void Test(string operant)
{
    Dictionary<string, Action> actionMap = new Dictionary<string, Action>();
    // map operant to action methods
    actionMap.Add("+", new Action(AddToken));
    actionMap.Add("-", new Action(AddToken));
    actionMap.Add("*", new Action(AddToken));
    actionMap.Add(">=", () =>
    {
        // anynomous method
        token.Add(">=");
    });
    actionMap.Add("/", new Action(Divide));
    actionMap.Add("<=", new Action(LessThanOrEqual));
    // list keep continue here

    foreach (string key in actionMap.Keys)
    {
        if (key == operant)
        {
            actionMap[key]();
        }
    }
}
private void AddToken()
{
}
private void Divide()
{
}
private void LessThanOrEqual()
{
}
// .. and so on

您正在尝试在开关语句('<=')中使用字符串(类型)。

我将使用从字符串到"做[es]某事"的函数的映射。我发现强行使用开关带来的问题比解决的问题还多。