C#面向对象字段(Field)和属性(Property)的区别

C#中字段可以是公有或私有的,可以随意的改变字段的值,但是当需要限定字段的取值范围或者设置字段只读或只写,单靠字段是没办法完成的,这时就引入了属性,可以通过属性的get和set设置字段的读取权限,get模块负责属性的读取,set模块负责属性的写入

例:通过set限制字段的取值

public class Person
{
private int _age;//字段

public int Age//属性
{
get
{
return _age;
}

set//可以限制字段的取值范围
{
if (value < 0&&value>110)
{
Console.WriteLine("输入的年龄不对");
}
else
{

_age = value;
}

}
}

注:value值就是外部对属性所赋的值,外部通过属性来实现对字段的操作

时间: 2024-07-29 06:49:43

C#面向对象字段(Field)和属性(Property)的区别的相关文章

Python: 浅淡Python中的属性(property)

起源:项目过程中需要研究youtube_dl这个开源组件,翻阅其中对类的使用,对比c#及Delphi中实现,感觉Python属性机制挺有意思.区别与高级编程语言之单一入口,在类之属性这一方面,它随意的太多,以致于习惯了高级语言的严谨,对如此随意心里倒是有些不安.也难怪,因为其数据类型弱限制性,往往一个函数返回了一个结果,追溯此返回值类型,有时需要费上许多工夫!我不是随意的人,但随意起来我还真不是人,用在此处,颇为贴切:b 属性,是对事物某种特性的抽象,面向对象编程中一个重要概念:区别于字段,它通

分析Runtime的属性Property

一.介绍 在OC中我们可以给任意的一个类以@property的格式声明属性,当然对于这个属性也会采用某一些属性关键字进行修饰,那么属性的真正的面目是啥样子的呢?其实,runtime源码中可以看到,property是一个结构,如下所示,只不过苹果为这个结构体另外定义了一个结构体指针. //属性结构体指针 typedef struct objc_property *objc_property_t; 二.函数 正如我们所知,MJExtension是一个非常流行的json解析框架,其内部对对象的每一个属

属性(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 */

iOS runtime探究(三): 从runtime开始理解OC的属性property

你要知道的runtime都在这里 转载请注明出处 http://blog.csdn.net/u014205968/article/details/67639303 本文主要讲解runtime相关知识,从原理到实践,由于包含内容过多分为以下五篇文章详细讲解,可自行选择需要了解的方向: 从runtime开始: 理解面向对象的类到面向过程的结构体 从runtime开始: 深入理解OC消息转发机制 从runtime开始: 理解OC的属性property 从runtime开始: 实践Category添加属

百度LBS云搜索时报错 &amp;quot;filter:area is not filteable field, please set property in the cloud-storage

{"status":2,"message":"filter:area is not filteable field, please set property in the cloud-storage 原因:你要把你自己定义的字段设成int 并设成过滤检索条件 搜的时候就不能传汉语了 要传相应的array的序号 1.1 2,2 http://api.map.baidu.com/geosearch/v2/nearby?&ak=l9O9cXXXXXn5O

hibernate字段名和属性

字段名和属性名相同 Annotation:默认为@Basic 注意:如果在成员属性没有加入任何注解,则默认在前面加入了@Basic Xml中不用写column 字段名和属性名不同 Annotation:使用@Column(name=”columnName”)进行注解 例如: * @Entity 表示下面的这个Teacher是一个实体类 * @Table 表示映射到数据表中的表名,其中的name参数表示"表名称" * @Column 表示实体类成员属性映射数据表中的字段名,其中name参

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

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

easyui datagrid columns的field支持属性的子属性(field.sonfield形式或者格式化程序形式)

所谓为了支持某属性的子属性,主要为了解决.在服务器返回的json格式的数据的某个属性带有自属性,而我们恰恰又需要使用到该子属性作为我们的datagrid的某个字段的.默认情况下datagrid只能支持一级属性字段(属性的属性字段属于二级字段). 对于这个问题的解决方案有两种方式 1.就是更改esayui源文件,使其支持field.sonfield的形式. javascript语法为我们提供了两种方式获取一个对象的属性:点字符连接和[]方式.使用[]可以很方便的将一个属性通过字符串的方式获取.但是

Elasticsearch Java API(九)--删除文档的field以及field的属性

一.需求 项目中需要实现删除文档的一个field以及删除指定field的一个属性. 以文档test/document/1为例: { "_index": "test", "_type": "document", "_id": "1", "_score": 1, "_source": { "class": "com.tes