0

シングルパターンを実装しました。これが私のコードです。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()関数を呼び出すと、スタックオーバーフローのエラーが発生します。

4

2 に答える 2

2

Instance プロパティが null かどうかを確認すると、それ自体が再帰的に呼び出されます。

于 2012-11-24T20:13:33.293 に答える
2

これを試して:

public static WordDataSource Instance
{
    get
    {
        if (_dataSoruce == null)
        {
            _dataSoruce = new WordDataSource();
         }
         return _dataSoruce;
     }
}
于 2012-11-24T20:15:01.680 に答える