不知道大家曾经是怎么使用实体中的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定义属性和字段。并非必要的,要依据实际情况来使用。小小的使用经验。希望对大家全部启示。实例源代码下载

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

不要小看了get 与set的更多相关文章

  1. 可别小看了XSS漏洞

    可别小看了XSS漏洞 ​ 对于初了解xss漏洞的人来说,XSS漏洞的危害就是获取受害者的cookie,来进行 'cookie劫持'. ​ 今天就总结一下XSS漏洞的危害性,望安全人员不要轻视,开发人员 ...

  2. Java注解(Annotation):请不要小看我!

    Java注解是一系列元数据,它提供数据用来解释程序代码,但是注解并非是所解释的代码本身的一部分.注解对于代码的运行效果没有直接影响. 网络上对注解的解释过于严肃.刻板,这并不是我喜欢的风格.尽管这样的 ...

  3. JavaSe: 不要小看了 Serializable

    Java中,一个类要支持序列化,我们通常实现Serializable.在使用Serializable,应当制定一个SerialVersionUID,用于代表类的版本.如果不指定会有什么影响呢?在了解这 ...

  4. oracle ebs常规小看点

      1. 在oracle applications 11i 中如何快速获得上次查询的SQL 语句 方法:我们不必使用SQL Trace 来获得,有一个简单的办法,即:帮助->诊断->检查- ...

  5. 不要小看小小的 emoji 表情

    前言 好久没更新了,最近事比较多,或许下个月就会恢复到正常的发文频次. 这篇文章得从一个 emoji 表情开始,我之前开源的一个 IM 项目中有朋友提到希望可以支持 emoji 表情传输. https ...

  6. Jupyter NoteBook输出的图表太小看不清怎么办?

    如果使用的是matplotlib绘图,可以通过以下命令更改图片的大小: %matplotlib linline 如果是 plt.figure(figsize=(5,3)) #其中(5, 3)用于控制图 ...

  7. MVC5 - ASP.NET Identity登录原理 - Claims-based认证和OWIN

    在Membership系列的最后一篇引入了ASP.NET Identity,看到大家对它还是挺感兴趣的,于是来一篇详解登录原理的文章.本文会涉及到Claims-based(基于声明)的认证,我们会详细 ...

  8. EasyPR--中文开源车牌识别系统 开发详解(1)

    在上篇文档中作者已经简单的介绍了EasyPR,现在在本文档中详细的介绍EasyPR的开发过程. 正如淘宝诞生于一个购买来的LAMP系统,EasyPR也有它诞生的原型,起源于CSDN的taotao123 ...

  9. JQuery插件定义

    一:导言 有些WEB开发者,会引用一个JQuery类库,然后在网页上写一写$("#"),$("."),写了几年就对别人说非常熟悉JQuery.我曾经也是这样的人 ...

随机推荐

  1. win10 无法访问XP 共享目录原因

    win10 无法访问XP 共享目录原因     *现象:  在地址栏中输入\\192.168.100.5 (XP文件服务器),出现:.....找不到网络路径, 此连接尚未还原.             ...

  2. Vue this.$router.push、replace、go的区别

    1.this.$router.push 描述:跳转到不同的url,但这个方法会向history添加一个记录,点击后会返回到上一个页面 用法 //字符串 this.$router.push('home' ...

  3. cx-oracle-------------------安装

    这个东西弄完就报错.... 这个是Oracle官方的方法:https://oracle.github.io/odpi/doc/installation.html#windows 然而,你懂的,不能用啊 ...

  4. React 第一天

    第一天 从webpack到babel再到React.js Vue是如何实现组件化的: 通过.vue文件,来创建对应的组件: ·template 结构 ·script 行为 ·style 样式 Reac ...

  5. 2013-11-02 【webrebuild广州站】分享会纪要

    为了不让自己沉浸个人的技术研究当中,也为了多去接触业界新技术新思想,今天去参加了webrebuild广州站的一个分享交流会,效果不错,有一些获益.听了四个主题,依据个人获取信息的情况来做个纪要(比较粗 ...

  6. BZOJ 5394 [Ynoi2016]炸脖龙 (线段树+拓展欧拉定理)

    题目大意:给你一个序列,需要支持区间修改,以及查询一段区间$a_{i}^{a_{i+1}^{a_{i+2}...}}mod\;p$的值,每次询问的$p$的值不同 对于区间修改,由线段树完成,没什么好说 ...

  7. CSS 清除浮动 伪类

    参考链接:https://www.cnblogs.com/yingsu/p/7261904.html 不清楚浮动的结果和影响不再描述,清除浮动的代码别处也有很多,每种方法都有十分简洁的代码,我今天学到 ...

  8. CAD二次开发(02)-添加对象到模型空间

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  9. C#-类 字段 属性 方法 特性

    方法的签名 包括参数个数.参数类型.方法返回值 base和this关键字 1.使用base关键字,就可以使用父类中的字段.属性.方法 2.一旦父类中存在有参数的构造函数,那么子类就必须使用base来覆 ...

  10. Qt之滚动字幕

    简述 滚动字幕,也就是传说中的跑马灯效果. ​简单地理解就是:每隔一段时间(一般几百毫秒效果较佳)显示的文字进行变化(即滚动效果). 简述 实现 效果 源码 实现 利用定时器QTimer,在固定的时间 ...