单例模式中的堆栈溢出错误

时间:2012-11-24 20:03:42

标签: c# exception singleton

我已经实现了单一模式。这是我的代码我在调用Test.BuildData()函数时遇到错误。请帮忙

 public class WordDataItem
    {
        public string Word { get; set; }
        public string Definition { get; set; }
        public int WordGroupKey { get; set; }
    }

    public class WordDataGroup
    {
        public List<WordDataItem> listItem = new List<WordDataItem>(); 
        public int GroupKey { get; set; }
    }
    public sealed class WordDataSource
    {
        private static  WordDataSource _dataSoruce;

        private List<WordDataGroup> listGroup = new List<WordDataGroup>();

        public List<WordDataGroup> ListGroup
        {
            get { return listGroup; }
            set { listGroup = value; }
        }

        private WordDataSource() { }

        public static WordDataSource Instance
        {
            get
            {
                if (Instance == null)
                {
                    _dataSoruce = new WordDataSource();
                }
                return _dataSoruce;
            }
        }        
    }

    public static class Test
    {
        public static void BuildData()
        {
             WordDataSource.Instance.ListGroup.Add(new WordDataGroup() { GroupKey = 8, listItem = new List<WordDataItem>() { new WordDataItem() {Word = "Hello", Definition="Greetings", WordGroupKey = 8}} });
        }
    }

当我调用Test.BuildData()函数时,我收到堆栈溢出错误。

2 个答案:

答案 0 :(得分:2)

当您检查它是否为null时,您的Instance属性会以递归方式调用。

答案 1 :(得分:2)

试试这个:

public static WordDataSource Instance
{
    get
    {
        if (_dataSoruce == null)
        {
            _dataSoruce = new WordDataSource();
         }
         return _dataSoruce;
     }
}