C#属性(Property)

作者: adm 分类: C# 发布时间: 2024-03-27

属性(Property)是类(class)、结构体(structure)和接口(interface)的成员,类或结构体中的成员变量称为字段,属性是字段的扩展,使用访问器(accessors)可以读写私有字段的值。

属性没有确切的内存位置,但具有可读写或计算的访问器。例如有一个名为 Student 的类,其中包含 age、name 和 code 三个私有字段,我们不能在类的范围以外直接访问这些字段,但是可以访问来这些私有字段的属性。
访问器
属性访问器有两种,分别是 get 属性访问器和 set 属性访问器。其中 get 访问器用来返回属性的值,set 访问器用来为属性设置新值。在声明访问器时可以仅声明其中一个,也可以两个访问器同时声明,如下例所示:
// 声明 string 类型的 Code 属性
public string Code {
get {
return code;
}
set {
code = value;
}
}
// 声明 string 类型的 Name 属性
public string Name {
get {
return name;
}
set {
name = value;
}
}
// 声明 int 类型的 Age 属性
public int Age {
get {
return age;
}
set {
age = value;
}
}
【示例】下面通过示例演示属性的用法。
using System;
namespace net.yinzhong
{
class Demo
{
static void Main(string[] args)
{
// 创建一个新的 Student 对象
Student s = new Student();
// 设置 student 的 code、name 和 age
s.Code = “001”;
s.Name = “Zara”;
s.Age = 9;
Console.WriteLine(“学生信息: {0}”, s);
// 增加年龄
s.Age += 1;
Console.WriteLine(“学生信息: {0}”, s);
Console.ReadKey();
}
}
class Student
{
private string code = “N.A”;
private string name = “not known”;
private int age = 0;
// 声明类型为 string 的 Code 属性
public string Code
{
get
{
return code;
}
set
{
code = value;
}
}
// 声明类型为 string 的 Name 属性
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
// 声明类型为 int 的 Age 属性
public int Age
{
get
{
return age;
}
set
{
age = value;
}
}
public override string ToString()
{
return “编号 = ” + Code +”, 姓名 = ” + Name + “, 年龄 = ” + Age;
}
}
}
运行结果如下:
学生信息: 编号 = 001, 姓名 = Zara, 年龄 = 9
学生信息: 编号 = 001, 姓名 = Zara, 年龄 = 10

抽象属性
抽象类中可以拥有抽象属性,这些属性会在派生类中实现,下面就通过一个示例来演示一下:
纯文本复制
using System;
namespace net.yinzhong
{
class Demo
{
static void Main(string[] args)
{
// 创建一个新的 Student 对象
Student s = new Student();
// 设置 student 的 code、name 和 age
s.Code = “001”;
s.Name = “Zara”;
s.Age = 9;
Console.WriteLine(“学生信息: {0}”, s);
// 增加年龄
s.Age += 1;
Console.WriteLine(“学生信息: {0}”, s);
Console.ReadKey();
}
}
public abstract class Person
{
public abstract string Name
{
get;
set;
}
public abstract int Age
{
get;
set;
}
}
class Student
{
private string code = “N.A”;
private string name = “not known”;
private int age = 0;
// 声明类型为 string 的 Code 属性
public string Code
{
get
{
return code;
}
set
{
code = value;
}
}
// 声明类型为 string 的 Name 属性
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
// 声明类型为 int 的 Age 属性
public int Age
{
get
{
return age;
}
set
{
age = value;
}
}
public override string ToString()
{
return “编号 = ” + Code +”, 姓名 = ” + Name + “, 年龄 = ” + Age;
}
}
}
运行结果如下:
学生信息: 编号 = 001, 姓名 = Zara, 年龄 = 9
学生信息: 编号 = 001, 姓名 = Zara, 年龄 = 10

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!