在VBScript中使用类(三)

2016-01-29 19:58 42 1 收藏

在VBScript中使用类(三),在VBScript中使用类(三)

【 tulaoshi.com - ASP 】

我们来分析一下(2)中的程序:

Class TVProgram

Public StartTime



Public internal_ProgramDate



Public Property Get ProgramDate

ProgramDate = Day(internal_ProgramDate) & _

" " & MonthName(Month(internal_ProgramDate)) & _

" " & Year(internal_ProgramDate)

End Property



Public ProgramTitle

End Class



Dim objTVShow

Set objTVShow = New TVProgram



objTVShow.StartTime = CDate("17:30")

objTVShow.internal_ProgramDate = DateSerial(1999,9,17)

objTVShow.ProgramTitle = "The Jerry Springer Show"





Response.Write objTVShow.ProgramTitle & " is on at " & _

objTVShow.StartTime & " on " & objTVShow.ProgramDate & "."



当调用对象的属性ProgramDate时,实际上执行了函数ProgramDate,即如上定义的函数,而很快你也将习惯这种在声明部分使用Public或Private关键字的方式。关键字“Property”,告知了编译器如同调用属性一样在外部调用函数。接着的“Get”,表明该函数是输出还是获得一个值。

Get的意思是“允许外部代码去‘获取’一个值”,与其类似的关键字还有“Let”和“Set”,但这两个比较复杂,因而我们以后再讨论。

接下去的代码看来有点难度的,给objectname.internal_ProgramDate赋值并通过objectname.ProgramDate来调用它。如果可以使用相同关键字同时为其赋值并获得它的值不是更好吗?当然,那也可以。

如果定义Get和Let属性的名称相同,可以将它们当作对象相同的属性,但这只限于它们定义了相同数量的成员。(以下代码看来不太相同,仅作为实例参考)

Class TVProgram

Public StartTime



Public internal_ProgramDate



Public Property Get ProgramDate

ProgramDate = Day(internal_ProgramDate) & " " _

& MonthName(Month(internal_ProgramDate)) & _

" " & Year(internal_ProgramDate)

End Property



Public Property Let ProgramDate(ByVal varDateIn)

internal_ProgramDate = CDate(varDateIn)

End Property



Public ProgramTitle

End Class



Dim objTVShow

Set objTVShow = New TVProgram



objTVShow.StartTime = CDate("17:30")

objTVShow.ProgramDate = "17 Sept 99"

objTVShow.ProgramTitle = "The Jerry Springer Show"

Response.Write objTVShow.ProgramTitle & " is on at " & _

objTVShow.StartTime & " on " & objTVShow.ProgramDate & "."



以上代码中Let的声明部分看来似乎是一个多余的元素,当我第一次看到时研究了很长时间。每次我使用“0”作为变量用在每个属性上,我总是得到这个错误信息,“元素数量必须相等”。“它们确实相等!”抓狂之后,我回过头去看程序才觉得自己的愚蠢!:)

原因是,当你试图为ProgramDate赋值时,你会使用这样一行程序:

objTVShow.ProgramDate = dtmMyDate

为了方便,等号右边的值(这里指dtmMyDate)作为了一个程元赋给了函数。因此编译器可能会认为在Get ProgramDate行有0程元,而Let ProgramDate却多一个!分配的值总是被略过而作为属性的最后一个程元,所以即使你使用其他程元,所赋的值总是作为最后一个程元。

现在看程序。无论通过ProgramDate设置日期为文本形式,还是用internal_ProgramDate译成日期变量,程序都没有问题。但能不能只使用一个入口呢?

如果internal_ProgramDate只能在内部有效,而使用Let ProgramDate检查传输的数据类型,我们就可以作出选择。例如:

Class TVProgram

Public StartTime



Private internal_ProgramDate



Public Property Get ProgramDate

ProgramDate = Day(internal_ProgramDate) & " " & _

MonthName(Month(internal_ProgramDate)) & _

" " & Year(internal_ProgramDate)

End Property



Public Property Let ProgramDate(ByVal varDateIn)

If IsDate(varDateIn) Then

internal_ProgramDate = varDateIn

Else

'Place some error handling code in here.

End If

End Property



Public ProgramTitle

End Class

并同样声明StartTime属性:

Class TVProgram

Private internal_StartTime



Public Property Get StartTime

StartTime = Ho

来源:http://www.tulaoshi.com/n/20160129/1510476.html

延伸阅读
从C++转到Java上的程序员一开始总是对Java有不少抱怨,其中没有枚举就是一个比较突出的问题。那么为什么Java不支持枚举呢?从程序语言的角度讲,支持枚举意味着什么呢?我们能不能找到一种方法满足C++程序员对枚举的要求呢?那么现在就让我们一起来探讨一下这个问题。 枚举类型(Enumerated Types) 让我们先看下面这...
标签: Web开发
在浏览器中显示信息
标签: ASP
  VBScript5中增加了许多新功能,最振奋人心的当属类和正则表达式的出现。以下是本人写的一个解析html代码的类。我是学php的,语法有不习惯的地方,请大家多包含。 <% Class HTMLParse     ' 设置 Initialize 事件。     Private Sub Class_Initialize       ...
现在最常看见的关于DLL的问题就是如何在DLL中使用对话框,这是一个很普遍的关于如何在DLL中使用资源的问题。这里我们从Win32 DLL和MFC DLL两个方面来分析并解决这个问题。 1.Win32 DLL  在Win32 DLL中使用对话框很简单,你只需要在你的DLL中添加对话框资源,而且可以在对话框上面设置你所需要的控件。然后使用DialogBox或...
标签: PHP
  PHP包含支持Expat 解析器的可选XML扩展。PHP中的XML相关函数可以让你创建一个解析器来处理有效的XML文档。如果你所使用的Apache版本为1.3.7后的版本,则不用添加任何函数库。所需要做的只是使用--with-xml配置PHP。 在PHP手册中有好几个创建基于PHP的XML解析器很好的例子。此外,New Riders的Web Application Development with PHP 4....

经验教程

701

收藏

83
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部