C#属性使用详细

C#属性(Property)

代码

public string Name { get; set; }

或者

private string _name;
public string Name 
{
	get { return _name; }
	set { _name = value; }
}

说明:

  1. 上述两种写法本质是都是一样的,第一种是简写。
  2. get和set是两个方法,并且每一个属性都有对应的私有字段。
  3. 当给属性赋值的时候,其实是调用set方法,给对应的私有字段赋值;当读取属性值的时候,其实是调用了get方法,从对应的私有字段里面把值取出来。

数据存储

属性本身其实并没有保存数据,数据是保存到属性对应的私有字段中。

作用

属性是外界访问对象数据的“入口”,好比USB接口。
属性是为了更好的实现需求的变换的扩展,从而让一个属性可以实现多样的需求。

属性的扩展

【1】增加业务判断逻辑。
【2】设置只读字段功能。
【3】设置只读业务逻辑。(可以没有私有字段)

必须使用属性的场景

dgv表格数据显示,使用了属性的绑定

属性和字段的对比

【1】字段,又称为“成员变量”

  1. 目的:字段是为类的内部方法,或者方法之间传递数据使用的,强调对内使用。
  2. 修饰:字段一般用private修饰,很少用public。
  3. 读写:字段读写均可,也可以用readonly限制为只读,但是不能添加业务逻辑。

【2】属性

  1. 目的:属性是对外提供数据访问,本身不保存数据,强调对外使用。
  2. 修饰:属性都是public,从来不用private。
  3. 读写:属性可以轻松的实现单独读写控制,并且可以添加任意需要的业务逻辑。
  4. 强制:dgv列表必须强制使用属性,不能使用公有字段。

属性的新特性(.NET Framwork 4.6版本及以上)

【1】属性直接初始化

public string Name { get; set; } = "XXX";

【2】属性表达式(一般用于只读)

// 未使用属性表达式
public DateTime CollectionTime 
{ 
	get { return DataTime.Now; }
}
// 属性表达式
public DateTime CollectionTime CollectionTime2 { get => DateTime.Now; }
// 或者
public DateTime CollectionTime CollectionTime2 => DateTime.Now; 

总结

开发中,只要对外使用数据,都用属性,即使没有任何扩展业务,也不建议使用public类型的字段。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值