博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
不要小看了get 与set
阅读量:6237 次
发布时间:2019-06-22

本文共 2986 字,大约阅读时间需要 9 分钟。

不知道大家曾经是怎么使用实体中的getset.我先前是这样使用的.

定义一个实体类.之后写与之相关的字段名称.最后匹配上与之相关的属性,控制字段的读写权限.

曾经使用方式

代码1

public class product	{		private string code;		private string commodity_Name;		public string Code		{			get{ 				return code;			}			set{				this.code=value;			}		}		public string CommodityName		{			get			{				return commodity_Name;			}			set			{				this.commodity_Name = value;			}		}	}

之后就能够再别的类中对product的属性进行取值和赋值了.这是我们经常使用的方式.

近期使用方式

而近期一直在使用的实体类中发现。有些仅仅进行了字段的声明或仅仅定义了属性,没有字段声明.

后来发现尽管类中没有声明字段,可是程序会默认生成一个字段:

Public String Name{   Get;   Set;}

系统会生成默认字段string _name;

以上是背景。以下说说自身的使用

getset使用的体会

在表的设计中我们使用不经常使用到表的关联,可是在实体对象中。我们是经经常使用到的却是实体关联。而关联的使用。它的控制就体如今 getset中。

1使用get与set延迟载入

如:我们在上面的product类中关联了一个电商品清单集合类。

我们能够依据传入的code,实现动态的载入相关的产品清单。

代码2

private ProductElectricCollection  _productElectric;	public ProductElectricCollection  ProductElectric	{		get		{         //集合类初始为空			if (_productElectric==null)			{//推断关联的主类是否为空。说明已经载入了,那么就须要依据code从数据库中载入须要的电商品集合数据				if (this.code != null)				{					_productElectric = AdapterElectric.Instance.Load(this.Code);				}				//若传入的code为空,则创建一个空的集合类				else				{					_productElectric = new ProductElectricCollection();				}			}			//已经存在该集合			return _productElectric;		}		set		{			this._productElectric = value;		}	}

当我们载入完整个Product类的时候,引用类ProductElectric中是没有数据的

 

仅仅有当我们使用引用类中的数据时,才会触发调用该电商的数据。

这时候的写法非常例如以下

textBox1.Text=textBox1.Text = pc.ProductElectric[0].CommodityName.ToString();

这样就会调用实体类中预先写好的get方法。依据id载入我们我们电商集合订单。方法为以上的代码2

该方法为一种简单的延迟载入方式

2 使用get与set对其它字段赋值

不在自己的属性中对字段进行赋值

避免不必要常常调用,浪费资源

实例:

我们要算最小值,最小值须要使用到岗位经费,可是岗位经费须要依据职级载入。

 1原来思路:定义岗位经费属性和字段。每次调用则获取员工职级进行载入。

 就像上面的get方法一样,多次调用多次载入。

后来发现。计算费用须要多次调用该方法。实现是调用太频繁了,有些浪费资源。

2改动思路岗位经费依据职级载入。仅仅要职级不变。那么经费就是不会改变的。

则在进行职级赋值时。进行经费载入,这样,兴许调用直接获取字段中的值,就不必要在多次载入了。

降低了资源的开销。同一时候也将开放的postExpenseAnnuallyAmount属性去掉了。也是一种不错的写法。

//员工岗位经费		private decimal _postExpenseAnnuallyAmount;		private string _vocationLevel;		/// 		/// 员工职级		/// 		public string VocationLevel		{			get			{				return this._vocationLevel;			}			set			{				//假设职级与获得的不相等。则进行经费载入。				if (_vocationLevel != value && (value!=""))				{					//依据职级载入岗位经费					_vocationLevel = value;					var expense = PostExpenseStandardAdapter.Instance.GetDataByVocationLevel(Convert.ToInt32(_vocationLevel), DateTime.Now.SimulateTime());					if (expense != null)					{						this._postExpenseAnnuallyAmount = expense.PostExpenseAnnuallyAmount;					}				}				this._vocationLevel = value;			}		}		/// 		/// 最小薪酬值		/// 仅对宽带制有效,档级制时该值等于SalaryRealValue		/// 		public Decimal MinSalaryValue		{			get			{				decimal salaryWithoutPostAmount = SalaryStandardValue * (1 - FloatSpan) - _postExpenseAnnuallyAmount;				return IsNeedCityFactor ? salaryWithoutPostAmount * CityFactorValue :										  salaryWithoutPostAmount;			}		}

小结:

通过两个非常小的实例。

1发现getset的使用方法非常灵活,变通的非常。同一时候也是面向对象的一种体现。

可是我们却非常少这样使用。

2同一时候在定义实体类的时候也非常少使用实体关联的方法,这样大大降低了面向对象的使用。

3定义属性和字段。并非必要的,要依据实际情况来使用。小小的使用经验。希望对大家全部启示。

下篇介绍动态载入中的泛型托付

转载于:https://www.cnblogs.com/yutingliuyl/p/6928520.html

你可能感兴趣的文章
BZOJ3123:[SDOI2013]森林(主席树,启发式合并)
查看>>
varchar和Nvarchar区别
查看>>
《MySQL入门很简单》练习9.5
查看>>
一个简单的购物车程序
查看>>
牛客小白月赛1 C-分元宵(快速幂)
查看>>
移动端样式小技巧
查看>>
嵌入式第九次
查看>>
201521123026 《JAVA程序设计》第12周学习总结
查看>>
heroku部署java web项目
查看>>
【转】Lesktop 1.0 ——开源JS控件库,WebIM和网盘
查看>>
java学习中,面向对象的三大特性:封装、继承、多态 以及 super关键字和方法的重写(java 学习中的小记录)...
查看>>
算法笔记--二分图判定
查看>>
第二阶段冲刺 NO.3
查看>>
六个前端开发工程师必备的Web设计模式/模块资源(转)
查看>>
(转)linux下和云端通讯的例程, ubuntu和openwrt实验成功(一)
查看>>
zoj3501
查看>>
7.Python 之禅(2-11)
查看>>
mysql主从复制
查看>>
JAVA中toString方法的作用
查看>>
string.h 中常用函数
查看>>