属性的结构:
修饰符 类型 属性的名字{
set{
//set代码
}
get{
//get代码
}
}
属性的结构注意事项:
1.定义属性需要属性的名字和类型。
2.属性包含get块和set块,每种块最多有一个,一个属性里面不允许出现两个相同的块,同时一个属性中,必须要有get块或se块中的一个。
3.简写的属性:
public int Myint { set; get; }
我们经常会看到这种代码,系统会为我们自动生成一个小写的myint字段。
属性的标准例子
class Program
{
static void Main(string[] args)
{
MyClass myClass=new MyClass();
myClass.Myint = 200;
int num = myClass.Myint;
Console.WriteLine(num);
}
}
class MyClass
{
public int Myint
{
set
{
Console.WriteLine("SetInt");
Console.WriteLine(value);
}
get
{
Console.WriteLine("GetInt");
return 100;
}
}
}
程序运行的结果为:
SetInt
200
GetInt
100
从运行的结果可以看出,当给属性赋值的时候会调用属性中的set块,使用属性的值的时候会调用属性的get块。
属性的使用方法和字段的使用方法相同。
属性的作用
当学习完属性的结构和小例子之后,可以写一个属性,但是属性又有什么用呢?只是简单的赋值和调用?可以用在什么场合呢?
我们在使用字段的时候,习惯上把字段设置为私有的,这样外界就不能修改字段的值,然后我们通过定义属性来设置和取得字段中的值。有的同学会问了,对私有字段的设置和获取,函数可以同样实现。对比这两种方法:
class MyClass
{
private int x;
public int Myint //使用属性
{
set { x = value; }
get { return x; }
}
public int Getint() //使用函数
{
return x;
}
public void Setint(int x)
{
this.x = x;
}
}
结果很明显,使用属性更方便,代码的结构也更合理,这样的对比也可以看出
属性的本质就是外界访问私有字段的入口,本身就是方法,通过get方法和set方法对私有字段进行操作。
属性的优点:
1.设置属性的set块和get块的有无,可以设置对私有字段的只读或只写。
2.通过改变set块或者get块的修饰符,设置本地可读外界不可读的(或本地可写,外界不可写)的情况。
public int Myint //使用属性
{
set { x = value; }
private get { return x; }
}
加上private 修饰符后,只允许本地可读,外界不可读,只能写。
欢迎评价和指正!谢谢!