бросить System.StackOverflowException при создании объекта - PullRequest
1 голос
/ 05 июля 2019

когда я запускаю свой код в консоли, я нахожу этот массаж: процесс завершается из-за исключения 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 голосов
/ 05 июля 2019

Ваш класс 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);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...