最近在学习类的属性发现一个比较奇怪的Bug
在Progam 类下调用
class Program
{
static void Main(string[] args)
{
Person person = new Person();
//创建Person类的对象
string s = "0";
person.Age = -21;
person.Name = "张三";
person.Gender = 'x';
person.CHLSS();
Console.ReadKey();
}
}
class Person
{
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
private int _age;
public int Age
{
get { return _age; }
set
{
_age = value;
if (value < 0 || value > 100)
{
value = 22;
}
}
}
private char _gender;
public char Gender //<——这一行
{
get
{
if (_gender != '男' && _gender != '女')
{
return _gender = '男';
}
return _gender;
}
set { _gender = value; }
}
public void CHLSS()
{
Console.WriteLine("我叫{0},我今年{1}岁了,我是{2}的", this.Name, this.Age, this.Gender);
}
}
}
在断点调试的过程中,执行到 public char Gender ,进入属性中调用set方法,然后在set{_gender = value;}中赋值,但是这里会出现一个bug
就是当set方法结束时,检索set里_gender的值回显示"x",这没问题,此时再将鼠标挪至 public char Gender 这一行的Gender会显示Gender的值等于"男",此时再将光标移回set里的_gender会突然改变为"男",这种现象我觉得是一个很奇怪的Bug,我也不知道怎么描述,这算是一个神奇的发现吧~~
希望有人能解答我的疑惑
我用的是vs2019 community版本不知道是不是版本的问题