属性在调用者看来就像一个普通的变量,但作为类的设计者,你可以利用属性来隐藏你类中的一些字段,使外界只能通过属性来访问你的字段,你可以通过属性来限制外界对你的字段的存取,就利用get、set。如果想让用户随意存取你的字段,那么就实现get、set;如果只想让用户读取字段,就只实现get;若只想让用户写字段就只实现set。同时还可以在set和get中对用户传递的值进行一些验证工作,以确保你的字段将含有正确的值。
get和set虽然也是两个方法,但是这次只用这两个来解决兔子问题
private int num = 0;
public int Num
{
get
{
if (num == 1 || num == 2)
return 1;
int n = num;
int nn =0;
Num = n - 1;
nn += Num;
Num = n - 2;
nn += Num;
num = n;
return nn;
}
set
{
num = value;
}
}
static void Main(string[] args)
{
Program program = new Program();
for (int i = 1; i <= 10; i++)
{
program.Num = i;
Console.Write($"{program.Num} ");
}
}
实现其实还是递归,但是是通过get方法实现,加上get,set用起来比较特殊,看着很牛逼实则没卵用
我对属性的理解就是在
=左边触发set方法
=右边触发get方法
private int num = 0;
public int Num
{
get
{
if (num == 1 || num == 2)
return 1;
return (Num = num - 1) + (Num = num - 2);
}
set
{
num = value;
}
}
我刚开始是这样写,发现set方法不会触发
个人博客:33博客
微信公众号:33技术客