讨论奇妙的VB.NET属性

开发 后端
这里介绍VB.NET属性,属性被组织为单个Property代码块,其中针对属性的写(Set)和读(Get)操作设置了子代码块。这一程序起到了类的私有变量之上的抽象层作用。

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. <Serializable()> 
  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控件
责任编辑:佚名 来源: IT168
相关推荐

2009-10-30 15:51:30

VB.NET使用缺省属

2010-01-12 15:21:48

VB.NET权限控制

2009-10-20 10:29:30

VB.NET使用Sor

2009-10-29 10:45:01

VB.NET设置控件

2009-10-23 10:01:28

VB.NET申明Win

2009-10-16 12:52:28

VB.NET简单数据类

2009-10-13 09:24:57

VB.NET Dock

2009-10-14 11:15:06

VB.NET Grou

2009-10-28 10:51:32

VB.NET默认属性

2009-10-10 16:40:37

VB.NET Cont

2009-10-22 10:10:20

VB.NET Proc

2010-01-15 13:52:42

VB.NET属性设置

2010-01-18 11:20:13

VB.NET默认属性

2010-01-13 11:11:42

VB.NET Date

2009-10-27 13:45:32

VB.NET C#区别

2009-11-02 17:15:42

C#转换为VB.NET

2009-11-02 17:38:56

VB.NET与C#

2010-01-08 15:03:12

VB.NET类属性

2010-01-13 10:46:42

VB.NET Dock

2010-01-11 15:43:06

VB.NET类属性
点赞
收藏

51CTO技术栈公众号