7.22 C#学习笔记(属性)
·
属性
C# 中的属性(Property)是类和结构体中用于封装数据的成员。它们提供了一种方式来定义类成员的访问和设置规则,通常用于隐藏字段(Fields)的内部实现细节,同时提供控制数据访问的机制。
属性可以看作是对字段的包装器,通常由 get 和 set 访问器组成。
举例:在这里我们我们定义一个Student类,里面包含公有字段name、age,还有私有字段id。
internal class Student
{
public string name;
public int age;
private int id;
}
在Main方法里公有字段是可以正常访问的,而私有字段没有访问权限无法访问。
static void Main(string[] args)
{
Student stu=new Student();
stu.name = "李四"; //公有字段可以正常访问
//stu.id=123456; 访问私有数据是没有权限的
}
我们不能在类的范围以外直接访问这些域,但是我们可以拥有访问这些私有域的属性。
属性的定义
1.定义属性需要名字和返回值
2.属性分为两块 get块(获取) set块(设置)
3.访问属性和访问字段是一样的
定义一个可以访问和设置私有字段的属性ID:
internal class Student
{
public string name;
public int age;
private int id;
//定义属性
//使用属性也可以访问和设置带有权限的数据字段
public int ID
{
get
{
return id;
}
//=值 就是由value来代替的
set
{
id=value;
}
}
}
在Main函数中访问和设置属性:
//使用属性
//通过属性设置或访问数据 使用的时候把它当作一个普通的数据成员一样使用,并不是函数调用
stu.ID = 123456;//设置 =值 调用set
//访问 直接对象名.属性名
Console.WriteLine(stu.ID);
定义只读属性:
//只读
public int Age
{
get
{
return age;
}
}
使用只读属性:只读属性只能访问,不能设置。
//stu.Age=10;报错原因:Age属性是只读属性
Console.WriteLine(stu.Age);
定义只写属性:
//只写
public int Age1
{
set {
Age1=value;
}
}
使用只写属性:只写属性不能访问,只能设置。
stu.Age1 = 10;
//Console.WriteLine(stu.Age1);报错原因:只写属性
简化属性创建
在Student类中定义一个私有字段addres,再定义可以在外部访问和设置它的属性Addres。
private string addres;
public string Addres { get => addres; set => addres = value; }
以上方式写法比较复杂,C#提供了一种语法,可以简化属性写法:
public string Addres { get; set; }//即代表字段又代表属性
在这种情况下,编译器会自动为 Addres属性生成一个私有的匿名字段来存储值。
在Main函数中使用Addres属性:
stu.Addres = "河南省";
Console.WriteLine(stu.Addres);
注意:属性是可以在创建时初始化赋值的:
public string phone { get; set; } = "15151515";//15151515就是phone的默认值
在Main函数中使用访问属性:
Console.WriteLine(stu.phone);//输出结果为:15151515
以下是属性的实例:
class Dog
{
public string Name { get; set; }
private int age;
public int Age { get => age; set => age = value; }
public Dog(string Name)//构建函数传出名字参数
{
this.Name = Name;
}
public enum Ecolor //定义枚举限制颜色属性的数据范围
{
白, 黑, 黄, 灰, 花
}
//public Ecolor color;
//public Ecolor Color
//{
// get
// {
// return color;
// }
// set
// {
// color = value;
// }
//}
//同上
public Ecolor Color { get; set; }//定义颜色属性
}
在Main函数中使用访问属性:
Dog dog = new Dog("阿黄");
//dog.Name = "阿黄";
Console.WriteLine(dog.Name);
dog.Color = Dog.Ecolor.黑;
Console.WriteLine(dog.Color);
dog.Color = Dog.Ecolor.黄;
更多推荐


所有评论(0)