(四十二)C#编程基础复习——C#属性

发布时间 2024-01-04 15:31:32作者: 代号六零一

属性是类、结构体和接口的成员,类或结构体中的成员变量称为字段,属性是字段的扩展,使用访问器可以读写私有字段的值。属性没有确切的内存位置,但具有可读写或计算的访问器。例如有一个名为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;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _003
{
    /// <summary>
    /// C#属性——访问器案例
    /// </summary>
    internal class Program
    {
        static void Main(string[] args)
        {
            //创建一个新的Student对象
            Student s = new Student();
            //设置Student的code、name和age
            s.Code = "001";
            s.Name = "Zar";
            s.Age = 30;
            Console.WriteLine("学生信息:{0}",s);
            //增加年龄
            s.Age += 1;
            Console.WriteLine("学生信息:{0}",s);
            Console.ReadKey();
        }
    }
    class Student
    {
        private string code = "N.A";
        private string name = "not know";
        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;
        }
    }
}

二、抽象属性

抽象类中可以拥有抽象属性,这些属性会在派生类中实现,示例如下: