我得到"不能隐含地将字符串转换为char"错误。我正在尝试以下代码,我应该如何在< =运算符的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());
}
}
好吧,我有一个像这样的方法1:
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)这样的表达式,我正试图获取令牌。令牌是这里的字符串列表。但是,我在这里尝试做的还是检查逻辑运算符是否存在于表达式中... ex:(a + b)&lt; = 5,在这种情况下,我想检查下一个标记是否是&lt; =,如果是这样,将它添加到令牌列表中,目标是有一个方法来处理所有运算符(+, - ,*,/,&lt; =,&gt; =,==,!=)和在switch case语句中调用它。
答案 0 :(得分:0)
您正在尝试在switch语句('<='
)中使用String(种类)。
我使用字符串中的映射到&#34;做某事&#34;的函数。我发现试图强行使用开关导致的问题多于解决的问题。
答案 1 :(得分:0)
您可以使用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