我是C#的新手,正在探索C#get和set属性的基础知识.我发现的是,get set访问器或修饰符主要用于存储和检索私有字段中的值.
在这种情况下,使用公共字段有什么问题?
另一件事,我在get和set中写了一些条件.代码是
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#的新手,希望从基础知识中学习.提前致谢.
初始问题 - 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)