当我在控制台中运行代码时,我发现此消息:进程由于StackOverflowException而终止。
public class MyDictionary< TKey, Tvalue> : Dictionary<TKey,Tvalue>
{
private MyDictionary<TKey, Tvalue> md;
public MyDictionary(int size)
{md = new MyDictionary<TKey, Tvalue>(size);}}
static void Main(string[] args)
{var sOn = new MyDictionary<int, string>(4);}
当我使用调试模式时,我在构造函数中发现了问题,但我不知道 有什么问题吗?
答案 0 :(得分:0)
您的MyDictionary
类包含MyDictionary
的实例。构造函数初始化该成员,该成员依次调用该成员上的构造函数,该成员具有自己的成员,依此类推,直到耗尽调用堆栈并获取异常为止。
您可能不需要此成员,但需要将size
参数传递给base
构造函数:
public class MyDictionary<TKey, Tvalue> : Dictionary<TKey, Tvalue>
{
public MyDictionary(int size) : base(size) {}
// Here ------------------------^
static void Main(string[] args)
{
var sOn = new MyDictionary<int, string>(4);
}
}