首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 软件教学-> 办公软件
VB.net入门(10):补充:类~属性-.NET教程,VB.Net语言
作者:网友供稿 点击:336
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 
刚刚发现类还没有写完,还有一个比较大的部分:属性(property)。

property在java和c++里面都是闻所未闻的。通常认为类当中只要有成员和方法就行了。至于属性呢,当使用的时候,属性看起来就像成员,属性和成员有很多相似之处。但是属性有更多独特之处,它可以说是vb的一大特色。我的理解就是属性是为了更好的对成员进行处理而存在的。

属性是这样一种东西,它看起来像是成员,但本质上它是函数。属性的定义是这样的:
public property myproperty() as object myproperty是属性的名字
get 这个地方不能打括号
return mvarmyproperty
end get

set(byval value as object)
mvarmyproperty = value
end set
end property

可以看到,属性其实是由两个函数组成的:get 和 set()。当我们读取属性的时候,它就调用get,所以get里面必须有return语句;当设置属性的时候,它就调用set(),所以set()是带参数的。当外界读取myproperty的时候,myproperty就返回mvarmyproperty。mvarmyproperty是事先声明好的变量。当外界设置myproperty的时候,所赋的值就赋给mvarmyproperty。在这里,mvar-是vb6中缺省使用的前缀,表明这是一个存放属性的变量。

到这里你可能理解了,属性本身不保存数据,它通过另一个变量来读写。但是这又是一件奇怪的事:有必要这么麻烦吗?我直接写:
public myproperty as object

不是更简单吗?
这里有一个简单的解释:通过property,我们可以隐藏真实的成员,比如mvarmyproperty我们就可以定义为:
private mvarmyproperty as object

这样一来,外界就看不到mvarmyproperty,只能看到myproperty。当外界对其进行读写的时候,中间就有一个处理过程,用来避免对成员的不正确的赋值。其实对于这种情况,java和c++也有类似的做法,就是使用setmyproperty()函数和getmyproperty()函数。vb用property这种特殊的格式将它们做到一起,显得更简单方便了。

好了,到这里,你不想看看完整的例子吗?这里重新写了一个human类,当中有一个age(年龄)属性。我们看看它是怎样阻止把一个人的年龄设为负值的:
imports system

public module mymodule
sub main
dim laowang as new human
laowang.name = "老王"
laowang.age = 52
laowang.age = 330 这句话有没有把老王的年龄设为330岁呢?看看下一句的结果就知道了。
console.writeline("{0}现在{1}岁。", laowang.name, laowang.age)
console.readline()
end sub
end module

public class human
public name as string
dim mvarage as integer 这里没有指明是public还是private,因为缺省状态是private

public property age() as integer
get
return mvarage
end get
set(byval value as integer)
if value<=0 or value>=200 then 通常年龄不应该小于1或大于200
console.writeline(value & "岁?我死了吗?")
else
mvarage = value
end if
end set
end property
end class

到这里你应该闭目养神一会儿:原来属性是这样子的啊!








但是话题还没有完。

比如说,如果成员是一个数组,我该怎样为它建立属性呢?为当中的每一个元素建立吗?那数组大小变化了怎么办?property才不会这么蠢。我们举个例子。比方我们给human类添加一个数组成员children,表示一个人有多少个孩子。我们先定义mvarchildren:
dim mvarchildren() as human

为其建立属性有两种方式。一种是直接将属性的类型设为数组:
public property children() as human()
get
return mvarchildren
end get
set(byval value as human())
mvarchildren = value
end set
end property

那么我们就可以像使用数组一样来使用这个属性了。

另一种是在读取属性的时候传入参数index:
public property children(byval index as integer) as human
get
return mvarchildren(index)
end get
set(byval value as human)
mvarchildren(index) = value
end set
end property

这样可以对传入的下标进行检查。
这里提到读取属性的时候可以给参数。这是很有趣的一个东西。比如老王有3个小孩,其中一个叫“王华”。我想根据名字来得到这个小孩,我可以写一个函数
public function getchildbyname(byval name as string) as human 内容省略了

然后调用
laowang.getchildbyname("王华")

就可以了。
要写成属性的话,我们可以这样写:
public property child(byval name as string) as human
get
return getchildbyname(name)
end get
set(byval value as human)
getchildbyname(name) = value
end set
end property

这样,我们就可以直接使用:
laowang.child("王华").age = 20

这样是不是很方便啊?




文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·ASP.NET2.0连接SQL Server数据库详解-.NET教程,Asp.Net开发
·在.net中轻松掌握Windows窗体间的数据交互-.NET教程,.NET Framework
·Java中的类反射机制-JSP教程,Java技巧及代码
·小技巧让pdf文件与word文档之间自由地转换
·j2ee程序员应该掌握的linux知识-JSP教程,J2EE/EJB/服务器
·通过WMI获得硬盘和CPU的物理序列号(VB.net)-.NET教程,VB.Net语言
·firfox浏览器开发人公开firfox2.0开发计划
·VB.net入门(10):补充:类~属性-.NET教程,VB.Net语言
·office2003实战秘笈之excel轻松制胜招
·C#编码规范.doc-.NET教程,C#语言
最新文章
·天涯试水网络口碑营销 邢明:希望与"关键词"媲美_站长访谈
·美梨网站长冰寒的商务之道_站长访谈
·白手起家 新网站流量快速提高之道_站长心得
·照片处理 photoshop简单制作照片柔光效果_photoshop教程
·网络百戒 ---网页外观_站长心得
·utf-8转换gb2312编码,解决统计google搜索来源关键字乱_google推广
·googleadsense作弊不是技术的较量_google推广
·google改进搜索服务 企业可在local更新资料_google推广
·rss订阅对你的网站搜索表现有好处吗?_站长心得
·15种简洁有效的网站推广方法_站长心得
相关主题
  • vb.net实现窗体图标最小化到状态栏_vb/vb.net教程
  • vb.net基本语句_vb/vb.net教程
  • VB.NET中让Textbox只能输入数字(二)-.NET教程,VB.Net语言
  • VB.NET中让Textbox只能输入数字-.NET教程,VB.Net语言
  • vb.net中不需要EXCEL导出成XSL-.NET教程,VB.Net语言
  • 西部数码虚拟主机

    友情链接
    CNNIC 西部数码
    万网 自助建站
    虚拟主机 asp空间
    域名注册 域名
    域名申请 主页空间
    论坛空间 网站空间
    国际域名 虚拟空间
    空间租用 DDOS防火墙
    成都主机托管 四川主机托管
    主机租用 服务器租用
    网站目录 自助建站
    虚拟主机 网址大全
    软件下载
    自助链接
    虚拟主机资讯 特价虚拟主机
    版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
    关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
    发表评论 打印  刷新     关闭