EffectiveC#1--尽可能的使用属性(property),而不是数据成员(field)

1.属性可以进行数据绑定

2.可以做数据安全校验。在对数据检测时,如果发现数据不满足条件,最好以抛出异常的形式来解决 如下代码不可取

public string Name
{
  get
    {          if(this._Name==null)
          { return “NoName”; }
      else
        { return this._Name; }
    }
}

3.属性可以是抽象的,为设计扩展性更强的类提供了好的解决方案

4.属性可以定义在接口中

5.线程同步?

时间: 2024-10-14 16:14:07

EffectiveC#1--尽可能的使用属性(property),而不是数据成员(field)的相关文章

使用属性替换可访问的数据成员

自1.0版本以来,c#对属性进行了一系列的增强,让其表达能力不断提高.你可以对setter和geter指定不同的访问权限.同时隐式属性也极大降低了声明属性的工作量,不会比声明数据成员麻烦多少.如果你还在类型中声明公有成员,那么快停下来吧,下面我们来对比一下两者的优缺点: 1,属性可以创建出类似于数据访问,但实际上却是方法调用的接口,所以它可以享受到方法调用的所有好处. 2,客户代码访问属性的时候,就像是在访问公有字段,不过其底层使用方法实现,其中还可以自由定义属性访问器的行为. 3,.Net F

荐读|属性与可直接访问的数据成员之间应该如何选

写在前面 在书写C#代码的时候你是否有过这样的经历:经常混用属性以及公有的数据成员.毕竟他们的用法基本一致,对于使用来说好像没什么区别啊.其实我也经常使用类的公有的数据成员来定义一些常量,为了简单,在一些仅仅需要对外暴露一些常量的类中(如定义一些全局使用的常量),也都是通过定义公有数据成员实现的.直到看到世界世界知名专家Bill Wagner的那本<More Effective C#>之后才意识到应该尽量"使用属性而不是可直接访问的数据成员".因为属性具有修改的便捷性,多线

Effective C# 学习笔记(原则一:始终能的使用属性(property),而不是可直接访问的Data Member)

原则一:始终能的使用属性(property),而不是可直接访问的Data Member    Always use properties instead of accessible data members. 为什么要使用属性: 1.Net的data binding只支持Property,而不支持public data member的访问 Data binding的目的就是把一个object的Property绑定到一个用户界面的control上,web control或者windows form

属性(property)与成员变量(ivar)

类内使用成员变量{}, 类外使用属性@property /*********** --- Person.h */ @interface Person : NSObject { NSString *_name; } @property (nonatomic, copy) NSString *sex; @property (nonatomic, assign) int age; - (void)getPropertyAndiVar; @end /*********** --- Person.m */

实例变量(instance var)与属性(@property)的关系

实例变量(instance var)与属性(@property)的关系 Objective-C 2.0之后,声明一个@property name自动产生一个实例变量,名为_name,因此省去实例变量和属性重复输入的麻烦.而使用@synthesize可以改变_name名称.@property和@synthesize不必成对出现. @property name:指示编译器自动合成setter和getter方法,setter方法名即setName,而getter方法名即name.@property后面

区分元素特性attribute和对象属性property

其实attribute和property两个单词,翻译出来都是属性,但是<javascript高级程序设计>将它们翻译为特性和属性,以示区分.本文将详细介绍特性和属性的不同之处 定义 元素特性attribute是指HTML元素标签的特性 下面的id.class.title.a都是特性,其中a叫做自定义特性 <div id="id1" class="class1" title="title1" a='a1'></div

Objective-C入门教程03:属性(@property和@synthesize)

在Java中,特别是一个标准的POJO类,我们定义了一些属性,然后针对每个属性生成相应的getter和setter.例如: package com.demo; /** * 手机类 * @author liuzc */ public class Phone { private String color; //颜色 private String os; //系统 private String brand; //品牌 /******* Getter & Setter *******/ public S

Yii2基本概念之——属性(property)

学习任何一门学问,往往都是从起基本的概念学起.万丈高楼平地起,这些基本概念就是高楼的基石,必须做详尽的分析.我们知道,Yii2是一款脉络清晰的框架,理顺了基础的概念和基本功能,学习更高级和复杂的功能就容易多了.Yii2是一款纯面向对象的框架,它对类的功能做了扩充:PHP类的功能分为属性和方法,而Yii2定义了类的三个功能:属性(property),行为(behavior)和事件(event). 为了更好的实现面向对象的编程,拿到一个现实的对象,要构造一个PHP对象与之对应,如果用Yii2框架去实

Objective-C基础5 : 属性@property

1.类里面经常有一些变量需要进行set和get操作,OC中提供了方便的属性@property来替换set和get方法,这样能减少频繁且简单的重复代码.如下代码: @interface Person : NSObject @property NSString* strName; @property int nAge; @end @implementation Person @synthesize strName; @synthesize nAge; @end 通过在类声明变量前面添加@proper