namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
student s1=new student();
int a=s1.Age = 3;
Console.Write(s1.Age);
Console.Write(a);
}
}
public class student
{
private int age=2;
public int Age
{
get { return age; }
set {
if (value < 10)
{
age = 10;
}
else
{
age = value;
}
}
}
}
}
请问为什么这里s1.age输出10,a输出3呢?a不应该也是10吗?
你发现了一个新大陆,从直观上看 a==3,也是合理的,实际是编译器把它拆分成两个语句了。
s1.Age = 3;
int a = 3;
student s1 = new student(); //在这里取回的是小写age=2这个值 也就说是等于s1=age age值是2
int a = s1.Age = 3; 这里赋值的时候 你是先给a=s1.Age(10这个值)然后又=3(相当从新赋值了个3) 你这个写法拆开写就是 a=s1.Age; a=3;这个效果
Console.Write(s1.Age);//这里输出的是你从student()方法里从取的10这个值
Console.Write(a);//这里输出的是你从新付了俩边值 最后付的值是3