创建对象时抛出System.StackOverflowException

时间:2019-07-05 19:17:18

标签: c#-4.0

当我在控制台中运行代码时,我发现此消息:进程由于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);}

当我使用调试模式时,我在构造函数中发现了问题,但我不知道 有什么问题吗?

1 个答案:

答案 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);
    }
}