逻辑运算符的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语句中调用它。
你可以使用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]某事"的函数的映射。我发现强行使用开关带来的问题比解决的问题还多。