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"不具有类型参数
没有类型参数的堆栈可以正常工作。
这对我有效:
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
的形式处理所有事情,而不是以int
或string
的形式处理。
使用泛型堆栈,您不会将int和字符串推到它上面。您会根据声明的方式将int或字符串推到上面。
Stack
就像使用ArrayList
一样老派——它只是一个对象的集合。
Stack<>
几乎总是(总是?)人们想要使用的。
简言之(右)-您收到错误是因为您对使用所说的类型(通过using
)不接受类型。它只是处理对象。
通过从现有代码创建新项目解决了问题。
之后不需要更改任何代码,所以仍然不确定是什么导致了错误。