分享
 
 
 

关于.Net中属性的使用探讨(一)

王朝c#·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

关于.Net中属性的使用探讨(一)

codeprince http://tangyong.net@163.com

一.VB.Net中的属性

在使用面向对象思想设计类的时候,尤其当使用.Net开发时,我们经常想对客户代码显示数据,而又同时保证在类中表示数据的封装性。

在这种情况下,属性是理想的解决方案。属性的行为如同类中的数据块。类的用户可以直接访问属性的名称。效果等价于这个类中真正地包

含一个具有这个名称的数据项。在具体地实现中,get属性过程获取属性值;set属性过程设置属性值。.Net Framework中的公共语言规范

(CLS)支持两种不同的属性:

●标量属性

标量属性表示单个值。这个值可以是一个简单的值,如Char或String,或是较复杂的值,如DateTime等用户自定义的类型对象。

●索引属性

索引属性表示值的集合。客户代码使用数组语法来访问集合里的值。

文章的后面将详细地讨论这两种属性。但要记住:属性是.Net Framework中的一个标准特征。这就意味着用任何与CLS兼容的语言开发的程

序代码都可以使用在VB.Net的类中定义的属性。

一个实际的例子:

下面显示了City类的一个简单的属性CityName。

Class City

private mCityName as String

public Property CityName() as String

Get

return mCityName

End Get

Set(ByVal Value as String)

mCityName=Value

End Set

End Property

End Class

二.标量属性

上面的一个例子显示的就是标量属性。在上面的例子中要注意以下几点:

⑴ City类有一个字段mCityName,它保存城市名,这个字段声名为Private(私有),来阻止客户代码的访问。面向对象开发的最重要的

目的就是保持类的封装。换句话说:不要声名Public字段。

⑵ City类有一个属性CityName,用来获取和设置城市名。这个属性作为mCityName的包装器。CityName属性被声名为Public,这样它

可以用在客户的代码中。大多数属性趋向于Public,因为属性本质上是为类提供一个方便的公有接口。不过也可能出现Private和

Protected属性的情况。

⑶ 在定义CityName属性的时候,通过在Porperty语句的末尾附加语法As String来显示指定CityName的属性类型,这是一个良好的编程

习惯;但是在实际的编程中(比如我)在输入完CityName()之后按下回车键,系统也将自动地添加一段Get和Set的语法段,但是系统就

在Property语句的末尾将不附加As String。即如果你省略了返回类型,默认的返回类型是Object(这是系统的最基础的类,所有的

Class(包括用户自定义的类)都要继承于Object)。Set属性过程需要用一个参数,来指定新的属性值。参数的类型必须和属性相同。该

参数必须被定义为ByVal,这表示参数的值通过值传递而不是通过传引用的方式。

⑷ CityName属性在定义时被定义了Get和Set过程,但实际中有很多的属性(包括城市名)可能只是需要访问而不需要设置新的值,那么我们

可以省略Set属性,并对Property使用ReadOnly关键字,就像下面显示的:

Public ReadOnly Property CityName() as String

Get

return mCityName

End Get

End Property

当然有时我们也可以使用WriteOnly关键字,那么这个属性就是可写的。但是只写属性在实际设计中相对较少。

⑸ 在定义属性的时候我们也要注意属性的命名方式(尽管这在设计过程中并不是最重要的),一个好的命名方式能够使你在设计过程中享受快

乐,但定义属性的命名方式比区分大小写的语言(如C#等)要难的多,我个人喜欢为字段设置mXXX(如mCityName),将属性设置为XXX

(如CityName),选择什么并不重要,根据个人的喜好而定。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有