当我在控制台中运行我的代码时,我发现了这样的消息:由于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);}当我使用调试模式时,我在构造函数中发现了问题,但我不知道问题出在哪里?
发布于 2019-07-06 03:21:15
您的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);
}
}https://stackoverflow.com/questions/56908247
复制相似问题