为什么我得到:“错误2参数1:无法从'int'转换为'TRAINING1.Node <int>'”错误?</int>

时间:2013-04-17 13:28:19

标签: c# list class stack

这是一个应该列出并反转它的函数。我不知道为什么会收到这个错误。

    public static void What(List<int> lst)
    {
        Stack<int> st1 = new Stack<int>();
        while (!lst.IsEmpty())
        {
            **st1.Push(lst.Remove(lst.GetFirst().GetInfo());**
        }
        Node<int> pos = lst.GetFirst();
        while (!st1.IsEmpty())
        {
            pos = lst.Insert(pos, st1.Pop());
        }
    }

1 个答案:

答案 0 :(得分:2)

st1Stack<int>,这意味着它是一个强类型的整数堆栈。如果从Node<int>Node<int>没有隐式转换,则无法将int添加到此列表中。无论如何,尝试使用下一个代码作为使用堆栈的示例:

public static void Reverse(List<int> lst)
{
   Stack<int> st1 = new Stack<int>();
   while (lst.Count != 0)
   {
        var item = lst[0];
        lst.RemoveAt(0);
        st1.Push(item);
   }
   while (st1.Count != 0)
   {
       lst.Add(st1.Pop());
   }
}

这不是一个有效的解决方案,并且有很多缺点。我只想说明使用堆栈的正确反转方法尽可能接近您的情况。

您可以使方法Reverse通用,但已经在Linq中实现了行为。

考虑使用Reverse Linq方法。如果您只想撤销List<int>,请使用myList.Reverse().ToList()。它将以相反的顺序返回相同的List<int>