c# 字段 和属性的区别

        在类的设计中,如果将成员变量设置成公有变量,那么外部就可以随意访问甚至修改成员变量的值。为了成员变量的安全性考虑。因此设计了字段和属性,通过属性来访问字段的值。

字段相当于类于成员变量。通常设置为私有型,不被外部直接访问和修改。

属性相当于访问成员变量的方法,通常设置为公有型,可以被外部访问。

属性没有实体,仅充当一个方法的作用。相当于get(),set()方法,是对访问字段值的封装,其封装逻辑可以自行定义。可以通过属性访问到字段的值或者修改字段的值。

比如:

一个学生对象的学生ID、姓名、性别,出生日期不能随意更改,年级、总分可以更改。外部需要访问该学生的信息时,学生ID、姓名、性别、年龄、年级、总分的属性可以get方法获得,set方法设置。年龄属性可以通过出生日期获得。

class Student
{
    #region 字段
    DateTime birthday;// 出生日期
    #endregion

    #region 简写自动属性
    public long Id
    { get; set; }
    public string? Name // property
    { get; set; }
    public string? Sex
    { get; set; }
    public short Class
    { get; set; }
    public double Score
    { get; set; }
    #endregion

    #region 属性
    public DateTime Birthday
    { get { return birthday; } set { birthday = value; } }
    public short Age
    { get{ return (short)(DateTime.Now.Year - birthday.Year); } }
    #endregion

    public Student(long ID, string name, string sex, DateTime birth, short classNo, double score)
    {
        Id = ID;Name = name;Sex = sex;Class = classNo;Score = score; birthday = birth;
    }

}

该类的属性的调用:

DateTime birth = new DateTime(2017,10,20);
Student s = new(10000,"zhangsan","男",birth,3,3.1415926);
Console.WriteLine($"学生信息:学生号[{s.Id}],姓名[{s.Name}],性别[{s.Sex}],出生日期[{s.Birthday}],分数[{s.Score}]");
Console.WriteLine($"今年是{DateTime.Now.Year}年。");
Console.WriteLine($"学生[{s.Name}],今年的年龄是:{s.Age}岁");

执行结果,仅供参考:

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值