Go homepage(回首页)
Upload pictures (上传图片)
Write articles (发文字帖)

The author:(作者)qq
published in(发表于) 2014/7/11 9:19:17
c#中域和属性的概念

c#中域和属性的概念



域也叫成员变量,它表示存储位置,用来保存类的各种数据信息。域是C#中不可缺少的一部分。这个成员代表一个与一个对象或类相关的变量。一个域声明把一个或多个给定类型的域引入。域的声明非常简单,例如:

private Thread t = null;
域的修饰符可以是new、public、protected、internal、private、static、readonly。

一个声明了多个域的域声明和单个域的多个声明相等。例如:

private int a;

private int b;

private int c;

等同于:

private int a,b,c;
域又分为静态域和实例域。当域的声明中包含static修饰符时,域就是静态域。如果域的声明不包含static修饰符,则域就是实例域。实例域属于具体的对象,为特定的对象专有。当创建一个对象时,它的实例变量赋予对应于此对象的值,而且这些值在对象的生存期间与对象保持一致。

静态域属于类,是所有对象共同拥有的。C#中严格规定实例域只能通过对象来获取,静态域只能通过类来获得。

属性

属性是一种用于访问对象或类的特性的成员。属性可以包括字符串的长度、字体的大小、窗体的标题、客户的名称等。属性是成员的自然扩展,二者都是关联类型的命名成员。访问成员和属性的语法是相同的。

与成员不同的是,属性不表示存储位置。属性有访问器,这些访问器指定在它们的值被读取或写入时需要执行的语句。因此属性提供了一种机制,它把读取和写入对象的某些特性与一些操作关联起来。它们提供灵活的机制来读取、编写或计算私有成员的值,可以像使用公共数据成员一样使用属性,它们是称为“访问器”的特殊方法。这使得数据在可被轻松访问的同时仍能提供方法的安全性和灵活性。

属性结合了字段和方法的多个方面。对于对象的用户,属性显示为字段,访问该属性需要完全相同的语法。对于类的实现者,属性是一个或两个代码块,表示一个get访问器和/或一个set访问器。当读取属性时,执行get访问器的代码块;当向属性分配一个新值时,执行set访问器的代码块。不具有set访问器的属性被视为只读属性。不具有get访问器的属性被视为只写属性。同时具有这两个访问器的属性是读写属性。

与成员不同,属性不作为变量来分类。因此,不能将属性作为ref参数或out参数传递。

属性具有多种用法。它们可在允许更改前验证数据;它们可透明地公开某个类上的数据,该类的数据实际上是从其他源(例如数据库)检索到的;当数据被更改时,它们可采取行动,例如,引发事件或更改其他字段的值。

属性在类模块内是通过以下方式声明的:指定字段的访问级别、属性的类型、属性的名称,然后声明get访问器和/或set访问器的代码模块。例如:

public class Date

{

private int Day = 7;

public int day

{

get

{

return Day;

}

set

{

if ((value > 0) && (value < 8))

//http://www.isstudy.com

{

Day = value;

}

}

}

}

get访问器体与方法体相似,必须返回属性类型的值。执行get访问器相当于读取字段的值。例如,当正在从get访问器返回私有变量并且启用了优化时,对get访问器方法的调用由编译器进行内联,因此不存在方法调用的系统开销。然而,由于在编译时编译器不确定在运行时实际调用哪个方法,无法内联虚拟get访问器。


If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)





QQ:154298438
QQ:417480759