我收到一个错误:“非泛型类型`System.Collections.Stack'不能与类型参数一起使用”
// For use in BONUS section of lab:
class LossyStack<T> : Stack<T> {
private const int getAway=1; // Starts out at 1 (out of 20 random numbers - 5%)
public Stack<string> escsaped;
public LossyStack(): base() { // Constructor
escaped = new Stack<string>();
}
public T Pop() {
RandomNumber rand = new RandomNumber(1,20); // One to twenty
if (rand<=getAway){
escaped.push(base.Pop());
}
else {
return base.Pop();
}
getAway++; // add another 1 to getAway so it increases by 5%
}
}
谁能告诉我怎么能解决这个问题?谢谢一堆。
答案 0 :(得分:6)
替换:
使用System.Collections;
与
使用System.Collections.Generic;
答案 1 :(得分:3)
我看到的一个问题是“转义”堆栈是字符串类型,并且您正在从“通用”堆栈的基类推送它。
另一个问题是“getaway”被声明为const,在这种情况下你将无法在你的pop方法中增加它。
此处附加编辑: 您的Pop方法不会为每个代码路径返回任何内容,因此无法编译。当你进入转义堆栈时,你是否打算循环?
我打算尝试清理它并使一些东西可行,但我不确定这应该是做什么的。这里有一些代码,由于代码路径返回问题,它仍然无法编译,但它清理了一下:
class LossyStack<T> : Stack<T>
{
private int getAway = 1; // Starts out at 1 (out of 20 random numbers - 5%)
public Stack<T> escaped = new Stack<T>();
public LossyStack()
: base()
{ // Constructor
}
public T Pop()
{
Random rand = new Random();
if (rand.Next(20) <= getAway)
{
escaped.Push(base.Pop());
}
else
{
return base.Pop();
}
getAway++; // add another 1 to getAway so it increases by 5%
}
}
答案 2 :(得分:0)
using System.Collections.Generic;
在您的.cs文件中。