我如何将int传递给IEnumerable?

问题描述 投票:0回答:2

我的代码给我以下错误:编译错误(第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();
    }
}
c# list listview ienumerable rpn
2个回答
0
投票

似乎您只想输出当前分支(if)的index

只需直接调用Console.WriteConsole.WriteLine

...
else if (infixray[i].Equals("*") || infixray[i].Equals("+") || infixray[i].Equals("/") || infixray[i].Equals("-"))
{
     Console.WriteLine("    {i}");
     opStack.Push(infixray[i]);

0
投票

*“如何将int传递给IEnumerable?”

您可以创建包含IEnumerable的单项列表(实现int),并将其传递给方法:

PrintValues(new List<int> { i });

“'Program.PrintValues(System.Collections.IEnumerable)'的最佳重载方法匹配具有一些无效的参数”

但是由于编译器在抱怨没有合适的重载,因此我们可以通过编写带有int参数的方法的重载来为其提供一个重载:

public static void PrintValues(int item)
{
    Console.WriteLine("    {0}", item);
}
© www.soinside.com 2019 - 2024. All rights reserved.