如何在C#中使用set属性?

Noo*_*uvo 0 c#

我是C#的新手,正在探索C#getset属性的基础知识.我发现的是,get set访问器或修饰符主要用于存储和检索私有字段中的值.

在这种情况下,使用公共字段有什么问题?

另一件事,我在getset中写了一些条件.代码是

public int Number
    {
        get
        {
            if(Number>10)return 10;
            else
            {
                return Number;
            }
        }
        set
        {
            if (value > 10)
            {
                Number = 10;
            }
            else
            {
                Number = value;
            }                   
        }
    }
Run Code Online (Sandbox Code Playgroud)

问题出在这里?

另一个有趣的事情是,在VS中,递归符号出现在我检查条件的地方.有人解释一下,好吗?

在此输入图像描述

我是C#的新手,希望从基础知识中学习.提前致谢.

Set*_*ers 6

初始问题 - StackOverflow

问题是你无意中使用了递归,这会导致堆栈溢出,因为Number属性的getter和setter 正在获取并设置Number属性,而不是支持字段.

它应该至少改为:

private int number;

public int Number
{
    get
    {
        if(this.number>10)return 10;
        else
        {
            return this.number;
        }
    }
    set
    {
        if (value > 10)
        {
            this.number = 10;
        }
        else
        {
            this.number = value;
        }                   
    }
}
Run Code Online (Sandbox Code Playgroud)