【发布时间】:2020-06-16 07:26:32
【问题描述】:
我的代码给了我以下错误:编译错误(第 23 行,第 5 列):“Program.PrintValues(System.Collections.IEnumerable)”的最佳重载方法匹配有一些无效参数 编译错误(第 23 行,第 17 列):参数 1:无法从 'int' 转换为 'System.Collections.IEnumerable'"
using System;
using System.Collections;
public class Program
{
public static void Main()
{
Stack opStack = new Stack();
Stack valStack = new Stack();
Stack postStack = new Stack();
string infix = "A*B+C/D";
Console.WriteLine(infix);
char[] infixray = infix.ToCharArray();
for (int i = 0; i < infixray.Length; i++)
{
//Console.WriteLine(infixray[i]);
if (!infixray[i].Equals("*") || !infixray[i].Equals("+") || !infixray[i].Equals("/") || !infixray[i].Equals("-"))
{
postStack.Push(infixray[i]);
}
else if (infixray[i].Equals("*") || infixray[i].Equals("+") || infixray[i].Equals("/") || infixray[i].Equals("-"))
{
**PrintValues(i);**
opStack.Push(infixray[i]);
//int multpres=1, divpres=2, addpres=3, subpres=4;
postStack.Push(infixray[i]);
opStack.Push(infixray[i]);
valStack.Pop();
//valStack.Pop();
}
PrintValues(postStack);
}
}
public static void PrintValues(IEnumerable myCollection)
{
foreach (Object obj in myCollection)
Console.Write(" {0}", obj);
Console.WriteLine();
}
}
【问题讨论】:
-
当您需要
IEnumerable时,您正在将int值传递给您的PrintValues方法。要么将PrintValues方法的签名更改为采用int,要么将整个数组传递给该方法。 -
当您致电
PrintValues(i)时,您预计会发生什么,为什么?在该方法中,您希望如何循环单个整数? -
你可以把它换成
Console.WriteLine(i)为什么你需要打电话给PrintValues?
标签: c# list listview ienumerable rpn