C#中的字段与属性

C#中的字段与属性

学习笔记~~~~~~~~~~~~

字段

   字段是定义在方法外面的变量,是成员变量,主要是为了类的内部数据交换使用,字段一般是用private修饰,也可以用readonly修饰,表示只读字段,其它修饰符比较少用;字段是用来存储数据的。
   字段声明格式,[访问修饰符] 数据类型 字段名 [=初始值] 如:
   private string phoneName = string.Empty; 
     /// <summary>
    /// 手机类:手机编号,手机名称,手机价格,上线日期,销售年期
    /// </summary>
    public class MobilePhone
    {
        //定义一组手机数据字段,字段也是成员变量
        private int phoneId;
        private string phoneName;
        private int phonePrice;
        private DateTime onlineTime;
        private readonly int sellYears;
    }

属性

属性可以理解为对数据的存取,是一种方法,是字段的封装(字段才是对数据的保存单元)。一般对外提供访问,可以添加需要的逻辑,属性一般是用public修饰。

public class MobilePhone1
    {
        private int phoneId; //私有字段,公有属性

        public int PhoneId
        {
            get { return phoneId; }  //读取字段
           //属性可以有业务逻辑,对数据进行基本的筛选能力
            set                     //给字段赋值
            { 
                if(value < 0)
                   phoneId = 1000;
                else
                   phoneId = value;               
            } 
        }
        private string phoneName;
        public string PhoneName
        {
            get { return phoneName; }
            set { phoneName = value; }
        }
        private int phonePrice;
        public int PhonePrice
        {
            get { return phonePrice; }
            set { phonePrice = value; }
        }
        private DateTime onlineTime;
        public DateTime OnlineTime
        {
            get { return onlineTime; }
            set { onlineTime = value; }
        }
        
        public int SellYears
        {
            //属性还可以设置为只读属性
            get { return DateTime.Now.Year - onlineTime.Year+1; }
        }
    }
     public class Test
    {
        public void test1()
        {
            MobilePhone1 mobilePhone1 = new MobilePhone1();//创建手机类的实例对象
            mobilePhone1.PhoneId = -888;
            mobilePhone1.PhoneName = "华为Mate40Pro+";
            mobilePhone1.PhonePrice = 7800;
            mobilePhone1.OnlineTime = Convert.ToDateTime("2020-11-01");
            //mobilePhone1.SellYears = 4; 只读属性,不能赋值
            Console.WriteLine("手机编号为:" + mobilePhone1.PhoneId);
            Console.WriteLine("手机名称为:" + mobilePhone1.PhoneName );
            Console.WriteLine("手机价格为:" + mobilePhone1.PhonePrice+"元" );
            Console.WriteLine("手机上线日期:" + mobilePhone1.OnlineTime );
            Console.WriteLine("手机销售年期为:" + mobilePhone1.SellYears +"年");
        }
    }

运行结果

手机编号为:1000
手机名称为:华为Mate40Pro+
手机价格为:7800元
手机上线日期:2020/11/1 0:00:00
手机销售年期为:1

总结

属性可以说是字段的扩展,字段是存储数据的单元,而属性本身不存储数据,可以说是对数据的操作,拥有自己的业务逻辑,获取数据,对数据处理,返回处理后的数据等。
属性的定义是get访问器和set访问器组成,get访问器就是对字段值进行读取,而set访问器就是对字段值进行赋值,其实就是对字段操作的两个方法。

.net 4.6版本以上使用属性更简便

输入 prop 然后双击tab键,自动生成以下形式:
在这里插入图片描述

public class MobilePhone2
    {
        public int PhoneId { get; set; }//自动生成私有字段
        public string PhoneName { get;}
        public int PhonePrice { get; set; } = 7800;
        public DateTime OnlineTime { get; set; }
        public int SellYears { get => DateTime.Now.Year - OnlineTime.Year + 1; }

    }
  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用字段属性(Properties)的好处有以下几点: 1. 封装性:字段属性允许你控制对类的字段的访问,并提供了更严格的封装性。你可以定义只读、只写或读写属性,以控制外部代码对字段的访问和修改。这样可以防止对字段的意外修改,同时提供更好的数据安全性和代码可靠性。 2. 访问控制:通过使用字段属性,你可以限制对字段的访问权限。例如,你可以将某个属性定义为只读,这意味着其他代码只能读取该属性的值,而无法修改它。这种访问控制有助于保护数据的完整性和一致性。 3. 额外逻辑处理:使用字段属性,你可以在获取或设置属性值的过程执行额外的逻辑处理。这样可以在属性的读取或写入过程进行数据验证、计算或触发其他操作。例如,你可以在设置属性值之前检查其有效性,并在需要时引发异常或执行其他处理。 4. 与字段对应的方法:通过定义属性,你可以将对字段的读取和写入操作封装在属性方法。这样可以使代码更加一致和易于理解,并且可以提供更好的可维护性。属性方法可以像访问字段一样使用,但实际上它们是方法调用,这使得代码更加灵活和可扩展。 5. 对象的统一访问方式:使用属性,你可以以一致的方式访问对象的字段属性。这使得代码更易读、易维护,并且提供了更好的代码组织和可重用性。 总的来说,使用字段属性可以提供更好的封装性、访问控制、额外逻辑处理和代码组织,从而改善代码的可靠性、安全性和可维护性。 希望这回答了你的问题!如果还有其他疑问,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值