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

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

曾经使用方式

代码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
;

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

get与set使用的体会

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

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中是没有数据的

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFuX3lhbmt1bjIwMDk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

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

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

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;
/// <summary>
/// 员工职级
/// </summary>
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; }
} /// <summary>
/// 最小薪酬值
/// 仅对宽带制有效,档级制时该值等于SalaryRealValue
/// </summary>
public Decimal MinSalaryValue
{
get
{
decimal salaryWithoutPostAmount = SalaryStandardValue * (1 - FloatSpan) - _postExpenseAnnuallyAmount;
return IsNeedCityFactor ? salaryWithoutPostAmount * CityFactorValue :
salaryWithoutPostAmount; }
}

小结:

通过两个非常小的实例。

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

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

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

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

下篇介绍动态载入中的泛型托付參数使用

最新文章

  1. GetKeyState和GetAsyncKeyState以及GetKeyboardState函数的用法与区别
  2. Windows ICS 服务无法启动问题解决
  3. java项目使用的DBhelper类
  4. -_-#【Canvas】
  5. (转载)在spring的bean中注入内部类
  6. JAVA IO分析一:File类、字节流、字符流、字节字符转换流
  7. 备忘:Junit单元测试
  8. c语言头文件的认识
  9. jquery 在线视频
  10. [Leetcode]394.字符串解码
  11. 【hadoop】python通过hdfs模块读hdfs数据
  12. 全排列问题(c语言实现)
  13. RedHat6.5安装单机flume1.6
  14. CentOS7下搭建LNMP记录
  15. 配置linux的ip、网络等
  16. 连接sqlServer数据库&amp;jpa调用存储过程Java获取存储过程返回的多个结果集JAVA调用sqlserver存储过程的实现(返回多个结果集的实现)jdbc多结果集(getMoreResults)
  17. table中的td等长(不随内容大小变化)
  18. 不能与abstruct共同修饰方法的关键字
  19. nyoj1273 河南省第九届省赛_&quot;宣传墙&quot;、状压DP+矩阵幂加速
  20. BZOJ3527:[ZJOI2014]力——题解

热门文章

  1. 2013-11-02 【webrebuild广州站】分享会纪要
  2. BZOJ 3376 [Usaco2004 Open]Cube Stacking 方块游戏(带权并查集)
  3. c指针学习小结(参考别人总结的经验)
  4. 四则运算1 java+jsp+SQLServer
  5. 上海交大课程MA430-偏微分方程续论(索伯列夫空间)之总结(Sobolev Space)
  6. dos2unix和unix2dos命令使用【转】
  7. 国庆 day 3 上午
  8. js模拟支付宝提交表单
  9. SVN版本号管理工具使用中常见的代码提交冲突问题的解决方法
  10. 有关Java基础的一些笔试题总结