【C#】属性的声明

在面向对象程序设计中,属性是访问对象存储数据的首选方式。

一般不要直接公开类的变量成员,即便是get访问器和set访问器并无数据访问规则。


属性的声明

1. 完整声明 

在代码中输入propfull ,并连续按两下tab键

高亮的部分是可以修改的部分,按tab键可以跳转到第二个修改的部分

myVar是被属性包装的字段的名字

MyProperty是属性的名字

对于get访问器和set访问器:

  • get访问器的主要目的是为外部读取提供数据,因此在get访问器的语句块末尾,应包含向外部返回值的return语句
  • set访问器的主要目的是将外部数据写入对象,因此在set访问器中带有一个特殊的关键字value,如果把外部数据看作实参,value就是属性的形式参数

同样的定义一个静态属性Amount:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PropertyExample
{
    internal class Program
    {
        static void Main(string[] args)
        {
            try
            {
                Student.Amount = 100;
                Console.WriteLine(Student.Amount);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            Console.ReadLine();
        }
    }

    class Student
    {
   
        private static int amount;
        public static int Amount
        {
            get { return amount; }
            set 
            { 
                if(value>=0)
                {
                    Student.amount = value;
                }
                else
                {
                    throw new Exception("Amount must greater than 0");
                }
            }
        }

    }
}

分析代码:

  1. 定义了一个私有的静态整型变量 amount
  2. 定义了一个静态属性 Amount,它具有获取器(get)和设置器(set)。
    • 设置器检查传入的 value 是否大于等于 0。如果是,则将 amount 设置为 value;如果不是,则抛出一个异常。
    • 获取器返回私有变量 amount 的值。

2.简略声明

常用来传输数据,不对字段进行保护

在代码中输入prop ,并连续按两下tab键


属性与字段的关系

一般情况下,它们都用于表示实体(对象或类型)的状态
属性大多数情况下是字段的包装器(wrapper)
建议:永远使用属性(而不是字段)来暴露数据,即字段永远都是private或protected的

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值