C#使用属性
我们通常把字段定义为私有的,属性定义为公共的,通过属性访问字段。定义一个属性时,类型必须和它所访问的字段一致。
例如:姓名_name为string类型,那么它对应的属性Name也一定是string类型。
注意:属性不是必须和字段相关联的,但是没有字段单独定义属性没有任何意义。属性定义时属性名后边没有小括号,set{}和get{}访问器也都是大括号,不是小括号。
属性本质上是方法,只是与方法不同。可以实例化对象后给属性赋值,也可以取值,只调用属性即可。不需要访问其中的访问器。
using System;
class User
{
//设为私有的
private string name;
private string sex;
//设置属性Name
public string Name
{
//在属性Name里面声明了2个方法一个是get一个是set
//这2个方法没有任何的修饰符,而这2个方法实现的功能跟SetName和GetName完全一样
get
{
return name;
}
set
{
//大家注意这个value,它是一个隐含的参数
//也就是说IL代码会自动帮你生成一个value这么一个参数,我们可以直接调用它
//value就先当于SetName里面的values参数
//value的类型是跟私有字段name的类型是一致的
name = value;
}
}
//设置一个属性Sex
public string Sex
{
get
{
return sex;
}
set
{
if (value == "男" || value == "女")
{
sex = value;
}
else
{
Console.WriteLine("性别只能为“男”或“女”");
}
}
}
}
class Property
{
static void Main()
{
User zs = new User();
//调用属性
zs.Name = "李四";
zs.Sex = "牛";
Console.WriteLine("姓名:" + zs.Name + " 性别:" + zs.Sex);
}
}