C#中存在类型参数错误的堆栈

本文关键字:堆栈 错误 类型参数 存在 | 更新日期: 2023-09-27 18:21:19

我正在使用.NETFramework,Version=v4.5并尝试创建以下堆栈:

using System;
using System.Collections;
using System.Collections.Generic;
...
Stack<int> s = new Stack<int>(); 

为什么我会出现此错误?

类"System.Collections.Stack"不具有类型参数

没有类型参数的堆栈可以正常工作。

C#中存在类型参数错误的堆栈

这对我有效:

using System.Collections.Generic;
namespace HashSetPerformance
{
    public class SampleStack
    {
        public SampleStack()
        {
            Stack<int> s = new Stack<int>();
        }
    }
}

看看:MSDN通用堆栈类

确保你没有这样做:

using System.Collections; // This has to be: using System.Collections.Generic;
    namespace HashSetPerformance
    {
        public class SampleStack
        {
            public SampleStack()
            {
                Stack<int> s = new Stack<int>();
            }
        }
    }

因为这使用了非泛型类型Stack-类:MSDN堆栈类

您使用了错误的导入:

using System.Collections;

应为:

using System.Collections.Generic;

如果要使用通用堆栈类(允许您创建int堆栈),则需要使用System.Collections.Generic

System.Collections允许您创建一个对象堆栈。

使用非通用堆栈,您可以将数字42和字符串"frotz"推到堆栈上,如下所示:

s.Push(42);
s.Push("frotz");

但你必须知道(或弄清楚)当你从堆栈中弹出一些东西时,你会得到什么。因为它以object的形式处理所有事情,而不是以intstring的形式处理。

使用泛型堆栈,您不会将int和字符串推到它上面。您会根据声明的方式将int字符串推到上面。

Stack就像使用ArrayList一样老派——它只是一个对象的集合。

Stack<>几乎总是(总是?)人们想要使用的。

简言之(右)-您收到错误是因为您对使用所说的类型(通过using)不接受类型。它只是处理对象。

通过从现有代码创建新项目解决了问题。

之后不需要更改任何代码,所以仍然不确定是什么导致了错误。