get / set :
- get/set读写控制:属性中get和set可以只用一个,set代表写,get代表读。
- set访问器与返回void的方法类似。它可以称为value的隐式参数,词参数类型是属性的类型。
- get访问器可以用于返回字段值,或用于计算字段值并将其返回。
属性和字段区别:
public class Person
{
//属性
public string name
{
get { return _name; } //读
set {_name=value;} //写
}
----------
//字段,不是属性,可以认为变量
private string _name;//访问修饰符是private,那么这个字段就是私有的,外边不能访问
//可以通过属性 在外面或者其他地方进行访问
}
正常读写:
//属性
public string name
{
get { return _name; } //读
set {_name=value;} //写
}
一般读值是赋值的值。
但是极个别可以将读的值不一定是写的,在读里面写,比如:有人写-90或者200之类的,年龄没有这么大,就可以直接赋值。
更改set:
public int age
{
get { return _age; } //读
set //写
{
if (value >= 0 && value <= 150)
{
_age = value;
}
else
{
_age = 18;
}
}
}
static void Main(string[] args)
{
per.age = -10;
Console.WriteLine(per.name); //读值
}
//显示18,只要没有在区间则显示默认18
更改get:
更改get读,同样可以写成18
get
{
if (_age>=0&&_age<=150)
{
return _age;
}
else
{
return 18;
}
}
per.age = -10;
//per._name="张三";//赋值
Console.WriteLine(per.age ); //读值
类的练习:在另一个类中调取前面的属性:
在student中书写:定义属性
public class Student
{
// public student(string name,char gender,int age)
//{
// this._name=name;
// this._gender =gender ;
// this ._age=age;
//} //默认属性
private string _name;
public string name
{
get { return _name ; }
set { _name = value; }
}
private Char _gender;
public char Gender
{
get{return _gender;}
set {_gender=value ;}
}
private int _age;
public int age
{
get{return _age ;}
set{_age =value ;}
}
private int _chinese;
public int chinese
{
get{return _chinese ;}
set {_chinese =value;}
}
private int _math;
public int Math
{
get { return _math; }
set { _math = value; }
}
private int _english;
public int English
{
get {return _english ;}
set {_english =value ;}
}
public void Say()
{
Console.WriteLine("我叫{0},今年{1}岁了,是{2}生",this .name ,this.age ,this.Math );
}
public void Score()
{
Console.WriteLine("我叫{0},总成绩{1},平均成绩{2}",this.name,(chinese +Math +English ),(chinese+Math +English ) /3);
}
}
在problem总书写: 实例化
static void Main(string[] args)
{
Student zsStu = new Student();
zsStu.name = "张三";
zsStu.age = 18;
zsStu.Gender = '男';
zsStu.chinese = 90;
zsStu.Math = 95;
zsStu.English = 80;
zsStu.Say();
zsStu.Score();
Console.WriteLine("=============================");
Student xlStu = new Student();
xlStu.name = "小兰";
xlStu.age=17;
xlStu.Gender= '女';
xlStu.chinese = 95;
xlStu.Math = 85;
xlStu.English = 60;
xlStu.Say();
xlStu.Score();
Console.ReadKey();
}
显示结果: