【问题标题】:Why does this property cause a StackOverFlow exception?为什么这个属性会导致 StackOverFlow 异常?
【发布时间】:2015-07-29 22:48:49
【问题描述】:

我对错误进行了一些研究,当 setter 不断被调用时,我似乎在递归,但我真的不知道我做错了什么。我知道这可能也很简单。

 namespace PracticeCSharp
 {
class Program
{


    static void Main(string[] args)
    {
        Player test = new Player();
        test.Score = 5;
        Console.ReadLine();
    }

}
class Player
{
    public int Score
    {
        get
        {
            return Score;
        }
        set
        {
            Score = value;
        }
    }
}

}

感谢您的帮助。

【问题讨论】:

标签: c# properties get set prop


【解决方案1】:

因为 Score 属性在自身上递归。

您的意思是改为这样做吗?

namespace PracticeCSharp
{
    class Program
    {
        static void Main(string[] args)
        {
            Player test = new Player();
            test.Score = 5;
            Console.ReadLine();
        }

    }
    class Player
    {
        private int score;
        public int Score
        {
            get
            {
                return score;
            }
            set
            {
                score = value;
            }
        }
    }
}

更新:

您也可以这样做:

namespace PracticeCSharp
{
    class Program
    {
        static void Main(string[] args)
        {
            Player test = new Player();
            test.Score = 5;
            Console.ReadLine();
        }

    }
    class Player
    {
        public int Score { get; set; }
    }
}

【讨论】:

  • 这行得通,谢谢。使用这些真的有什么意义吗?看起来工作量很大。
  • 您可以使用自动实现的属性。我会用那个替代方法更新答案。
【解决方案2】:

你必须声明 score 变量

 namespace PracticeCSharp
 {    
    class Program
    {


        static void Main(string[] args)
        {
            Player test = new Player();
            test.Score = 5;
            Console.ReadLine();
        }

    }
    class Player
    {
        private int _score;
        public int Score
        {
            get
            {
                return _score;
            }
            set
            {
                _score = value;
            }
        }
    }
}

【讨论】:

    猜你喜欢
    • 2017-04-26
    • 1970-01-01
    • 2016-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-20
    • 1970-01-01
    • 2014-11-07
    相关资源
    最近更新 更多