用户实现访问器

本文关键字:访问 实现 用户 | 更新日期: 2023-09-27 17:53:17

我的代码目前是无限循环,我不知道为什么。我正在尝试实现一个get,set访问器,检查接受的数字是0-100之间,如果不是,它将设置值等于零。我不太明白我做错了什么,如能得到帮助,将不胜感激。

public double Quiz1
{
    get { return Quiz1; }
    set 
    {
        if (value > 0 && value < 101)
        {
            Quiz1 = value;
        }
        else
        {
            Quiz1 = 0;
        }
    }
}

用户实现访问器

当你在get变量中调用return Quiz1时,你是在一次又一次地递归地调用get变量。

自动实现属性(例如public double Quiz1 { get; set; })提供了一个隐藏字段,其中属性的值实际上是存储。

当为一个属性实现传统的(非自动的)getset方法时,没有自动生成的支持字段。

因此,您通常还需要添加一个后备变量:
private double m_quiz1;
public double Quiz1
{
    get { return m_quiz1; }
    set 
    {
        if (value > 0 && value < 101)
        {
            m_quiz1= value;
        }
        else
        {
            m_quiz1= 0;
        }
    }
}

参见:

  • 属性(c#编程指南)- MSDN