讨论奇妙的VB.NET属性
创始人
2024-06-09 18:00:39
0

VB.NET还是比较常用的,于是我研究了一下VB.NET属性,在这里拿出来和大家分享一下,希望对大家有用。很多人在对属性的认识上产生了一些混乱的概念。其实属性这个东西绝非人们想象的那么复杂。让我们回到最基础的概念层次上来讨论属性:所谓属性其实就是暴露了读/写接口的类的内部所包含的一块数据。按照这个定义,你可能会认为你能在类中声明一个公共变量然后把它称为一个属性。当然,这种假设也不是没有一点道理,不过,类的公共变量所对应的技术术语应该是field(域)。域和属性之间的关键差别在于接口的包含性质上。现在暂时不对这一差别做具体解释咱们先明白其语法用途即可,以下介绍VB.NET属性。

在VB6中,属性由Let、Get和Set程序来定义和操作。而在VB.NET中语法就变了。属性被组织为单个Property代码块,其中针对属性的写(Set)和读(Get)操作设置了子代码块。这一程序起到了类的私有变量之上的抽象层作用。大多数人习惯于采用类似公共变量的方式命名这些私有变量,在它们前面加上小写的前缀字母m或者加上下划线区分所关联的属性(m前缀是VB6中继承下来的,意思是:“模块级变量”)。举一个例子:

  1. Private _ContactName As String  
  2. Public Property ContactName()  
  3. Get  
  4. Return _ContactName  
  5. End Get  
  6. Set(ByVal Value)  
  7. _ContactName = Value 
  8. End Set  
  9. End Property 

我给一个假定的类ContactName创建了一个属性。为了支持该属性,我需要在类里设置一个变量存储其实际值。ContactName私有变量就是完成这一功能的。只要我获取或者设置了该属性,我就等于间接地使用了该值。

那么,为什么这么做就比使用域更好一些呢?主要的原因是,如果采用域,那么就无法控制写到变量中的数据。比方说,有的人却偏偏要在整数域中置入字符串或者给只读域赋值。在采用属性的情况下,你可以在Set程序中增加逻辑来保证赋值的有效性。你甚至可以完全省略Set代码块把属性设置为只读。

VB.NET属性真奇妙

最后,.NET还向我们提供了就被称为属性的内容。如果某个类标记为属性,那么它就被赋予一些特别有意思的专门功能。比如以下的Serializable属性。

  1. ()> 
  2. Public Class MyClass  
  3. '该类可以串行化!  
  4. End Class 

把以上的类标记为属性之后,不论其处于什么状态我都可以获取其实例并写出磁盘。在一些任何时候,我就可以对该类去串行化,就好象它始终保存在内存中一样。.NET框架提供了大量的属性,你甚至可以自VB.NET创建属性。

【编辑推荐】

  1. 详谈VB.NET编码规范经验
  2. 描述VB.NET工程转换成步骤
  3. 讲述C#与VB.NET间移植的技巧
  4. 分享个人总结VB.NET多线程
  5. 剖析VB.NET TextBox控件

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...