



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C#中的变量、字段、域、属性、属性过程在C#中: 域: 表示与对象或类相关联的变量,修饰符不论是不是public。(与字段类似) 字段: 表示与对象或类相关联的变量。通常来讲修饰符是public的成员变量称为字段,而private更适合说是局部变量。(与域类似) 属性: 表示域或字段的自然扩展,使得在保证封装性的基础上实现了访问私有成员的便捷性。域域表示与对象或类相关联的变量,声明格式如下:attributes field-modifiers type variable-declarators; 域的修饰符field-modifiers可以是:new、public、protected、internal、private、static、readonly。实际上,域相当于C+中的简单成员变量。在下面的代码中,类A包含了三个域:公有的X和Y,以及私有的z。class Apublic int x;public string y;private float z;字段 字段是与对象或类相关联的变量。 当一个字段声明中含有static修饰符时,由该声明引入的字段为静态字段(static field)。它只标识了一个存储位置。不管创建了多少个类实例,静态字段都只会有一个副本。 当一个字段声明中不含有static修饰符时,由该声明引入的字段为实例字段(instance field)。类的每个实例都包含了该类的所有实例字段的一个单独副本。 在下面的示例中,Color类的每个实例都有r,g,b实例字段的不同副本,但是Black,White,Red,Green和Blue等静态字段只有一个副本: public class Color public static readonly Color Black = new Color(0, 0, 0); public static readonly Color White = new Color(255, 255, 255); public static readonly Color Red = new Color(255, 0, 0); public static readonly Color Green = new Color(0, 255, 0); public static readonly Color Blue = new Color(0, 0, 255); private byte r, g, b; public Color(byte r, byte g, byte b) this.r = r; this.g = g; this.b = b; 如示例所示,通过readonly修饰符声明只读字段。给readonly字段的赋值只能作为声明的组成部分出现,或者在同一类中的实例构造函数或静态构造函数中出现。 属性 为了类的封装性,一般是把字段设为Private, 把属性设为公有来操作字段。 属性(property)是字段的自然扩展,两者都是具有关联类型的命名成员,而且访问字段和属性的语法是相同的。然而,属性与字段不同,不表示存储位置。相反,属性有访问器(accessor),这些访问器指定在它们的值被读取或写入时需执行的语句。 属性的声明类似于字段,不同之处在于属性的声明以定界符之间的get访问器和或set访问器结束,而不是分号。同时包含get访问器和set访问器的属性称为读写属性(read-write property)。只具有get访问器的属性称为只读属性(read-only property)。只具有set访问器的属性称为只写属性(write-only property)。 get访问器相当于一个具有属性类型返回值的无参数方法。除了作为赋值的目标外,当在表达式中引用属性时,会调用该属性的get访问器以计算该属性的值。 set访问器相当于一个具有单个名为value的参数和无返回类型的方法。当一个属性作为赋值的目标,或者作为+或-运算符的操作数被引用时,就会调用set访问器,所传递的自变量将提供新值。 List类声明了两个属性Count和Capacity,依次是只读和只写的。下面是使用这些属性的示例: List names = new List(); names.Capacity = 100; /调用set访问器 int i = names.Count; /调用get访问器 int j = names.Capacity; /调用get访问器 与字段和方法类似,对于实例属性和静态属性,C#两者都支持。静态属性是声明中具有static修饰符,而实例属性则没有。 属性的访问器可以是虚拟的。当属性声明中包含virtual,abstract,override修饰符时,它们将运用到属性访问器。 来自MSDN中的内容:属性与字段 属性与字段都可在对象中存储和检索信息。它们的相似性使得在给定情况下很难确定哪个是更好的编程选择。在以下情况下使用属性过程: 1. 需要控制设置或检索值的时间和方式时。 2. 属性有定义完善的一组值需要进行验证时。 3. 设置值导致对象的状态发生某些明显的变化(如 IsVisible 属性)。 4. 设置属性会导致更改其他内部变量或其他属性的值时。 5.必须先执行一组步骤,然后才能设置或检索属性时。在以下情况下使用字段: 1. 值为自验证类型时。例如,如果将 True 或 False 以外的值赋给 Boolean 变量,就会发生错误或自动数据转换。 2. 在数据类型所支持范围内的任何值均有效时。Single 或 Double 类型的很多属性属于这种情况。 3. 属性是 String 数据类型,且对于字符串的大小或值没有任何约束时。Visual Basic中属性和变量的差异(在C#中应该也是一样的)变量和属性都表示可以访问的值。但在存储和实现方面有所不同。变量 变量 直接对应于内存位置。可以使用单个声明语句定义变量。变量可以是“局部变量”,在过程中定义且仅可用于该过程;它也可以是“成员变量”,在模块、类或结构中定义,但不在任何过程中定义。成员变量又称“字段”。属性 属性 是在模块、类或结构中定义的数据元素。使用 Property 和 End Property 语句之间的代码块定义属性。此代码块包含一个 Get 过程t或一个 Set 过程,或两者都包含。这两个过程称为“属性过程”或“属性访问器”。除了检索或存储属性的值外,它们还可以执行自定义操作,如更新访问计数器。不同点 下表指出了变量和属性之间的一些重要差异。差异点 变量 属性 声明 单个声明语句 代码块中的一系列语句实现 单个存储位置 可执行代码(属性过程)存储 直接与变量的值关联通常包含内部存储;在属性的包含类或模块外部,这些内部存储不可用属性的值可能作为也可能不作为一个存储元素(见下(1))存在可执行代码 无 至少必须有一个过程读写访问权限 读/写或只读 读/写、只读或只写自定义操作 不可能 可以当作部分设置或检索属性值执行 注解:(1)和变量不同,属性的值可能不直接对应于单个存储项。为方便或安全起见,存储可能拆分为几块;也可能以加密格式
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高中政治3.1说课课件
- 2025年中国自动化仪表行业市场前景及投资研究报告
- 高一急救知识培训班课件
- 智能化施工安全防护空白单位工程劳务分包合同
- 离婚子女抚养权归属与财产分割及子女社会实践协议
- 离婚协议签署及履行监督服务合同
- 离婚协议:财产分割、子女抚养及共同财产清算合同
- 民族特色理发店技师劳务合作合同范本
- 广告内容本地化代理合同
- 职业技能拓展方案设计
- GB/T 45777-2025水泥中石膏掺量评估方法
- 任务一切中断时的接发列车办法授课颜保凡课件
- 小学数学思想方法(课件)
- 食品安全事故案例课件-002
- 领导干部压力管理与心理调适概论课件
- 气管插管导管脱出的应急预案
- 《宠物美容与护理》全套教学课件
- 表面工程学第十二章-表面微细加工技术
- 山东大学工程流体力学(杜广生)课件第5章 粘性流体的一维流动
- 底拖法在管道施工中的应用
- Toeic托业考试真习题及答案
评论
0/150
提交评论