zoukankan      html  css  js  c++  java
  • 属性与字段的区别

    首先从两者的声明上来看,公共字段只是类用public修饰符所公开的简单公共变量,而属性则是对字段的封装,它使用get和set访问器来控制如何设置或返回字段值。

    由于属性的实质是方法(get或set方法),在IL中是没有属性的概念的。所以对于开发过程中常用的赋值和取值操作来说,使用公共变量肯定会比使用属性速度要快,性能上也稍高(方法和变量哪个速度不用说了吧)。

    公共字段虽然在速度上快,但它必须开放字段为public,这样一来对象的调用者便可以直接修改其值,值的内容是否合法,运行中是否会出错,就没有了保障,进而会大大降低类的可重用性;相反,属性类似于方法,它可以对存入的变量的值进行处理,如果觉得该值不合法,可以就地变换或者直接提出警告。这对该类的对象的使用安全有很大好处,在运行过程中,因公共变量值的错误而产生的问题会大大减少。

    从上述内容来看,两者各有优缺点,在实际项目开发过程中,我们究竟选择使用哪一种方式呢?

    如果满足下面几个条件,那么我们便可以大胆地使用公共字段:

    1. 允许自由读写;

    2. 取值范围只受数据类型约束而无其他任何特定限制;

    3. 值的变动不需要引发类中其它任何成员的相应变化;

    属性的使用条件则恰好跟变量相反,只要满足下面任何一个条件,就应该使用属性:

    1. 要求字段只能读或者只能写;

    2. 需要限制字段的取值范围;

    3. 在改变一个字段的值的时候希望改变对象的其它一些状态;

    总结:虽然在实际项目的开发过程中,公共字段和属性在合适的条件下都可以使用,但是我们应该尽可能的使用属性(property),而不是数据成员(field);把所有的字段都设置为私有字段,如果要暴露它们,则把它们封装成属性,这也是微软推荐的方式。

     .NET会给属性建立索引器,这样访问效率会调高不少,而且你写起来也很方便
  • 相关阅读:
    48. Rotate Image
    47. Permutations II
    46. Permutations
    45. Jump Game II
    44. Wildcard Matching
    43. Multiply Strings
    42. Trapping Rain Water
    41. First Missing Positive
    40. Combination Sum II
    39. Combination Sum
  • 原文地址:https://www.cnblogs.com/ShaYeBlog/p/4283676.html
Copyright © 2011-2022 走看看