作者:hf40kiu | 来源:互联网 | 2023-02-03 13:23
该集合与Vbscript中的Dictionary有一些共同点,但它们不是一回事.
集合是Session.Contents属性等对象.
Dictionary是使用以下代码创建的对象.
Dim dictObj
Set dictObj = CreateObject("Scripting.Dictionary")
我想找到这两个类型对象的差异和公共,以便知道如何使用它们.
我发现了这些有用的文章,但仍然没有清楚地理解使用Vbscript在asp中真正的集合.
使用集合
在VBA中使用Dictionary类
我的问题是:
Vbscript中没有Collection数据类型吗?您可以创建字典但不能创建集合对象.
当使用For Each循环遍历集合时,x是什么,集合的关键还是集合项值?
for each x in Session.Contents
为什么你这样使用收藏?
Session("FirstName")
是相同的
Session.Contents("FirstName")
收集对象的文档是什么?
我能找到的字典文档就是这个
我可能误解了收藏对象,所以请告诉我.非常感谢.
1> Tomalak..:
Vbscript中没有Collection数据类型吗?
正确.没有内置的Collection数据类型.它存在于VB中,但Vbscript没有它.您可以在VBS中处理现有对象上的集合,但不能创建新集合.使用Scripting.Dictionary,它提供相同的功能.
使用For Each循环遍历集合时,x,集合的关键字或集合项值是什么?
For Each
循环总是给你关于类似集合的对象的键.然后,您可以使用该键来访问该值.(如果它给了你相反的值,就没有办法在for-each循环中找到键,也就是说你不知道这个值意味着什么.)
Dim key, val
For Each key In Session.Contents
val = Session(key)
Response.Write Server.HtmlEncode(key) & " = " & Server.HtmlEncode(val) & "
"
Next
为什么你这样使用收藏?
Session("FirstName")
由于默认属性中的Session
对象是Contents
集合.并且集合对象的默认属性是Item
.
默认属性是在代码中未命名属性但仍在对象上使用括号时调用的属性.
因此这些实际上是相同的:
Session("FirstName") = "Foo"
Response.Write( Session("FirstName") & "
" )
Session.Contents("FirstName") = "Bar"
Response.Write( Session.Contents("FirstName") & "
" )
Session.Contents.Item("FirstName") = "Baz"
Response.Write( Session.Contents.Item("FirstName") & "
" )
最后一个变体是实际发生的,而另外两个变体是语法糖.该Session.Contents
系列基于常规系列,但有一些额外的魔力.例如,访问丢失的密钥不会引发错误.
收集对象的文档是什么?
微软做了很好的工作,不仅放弃了VB 6.0文档,还做了一些无法找到的遗留问题.最接近的是Office VBA中Collection对象的文档.
否则,有IIS Session对象的文档,适用于经典ASP.相关:从ASP会话对象存储和删除数据.
多年的经验.此外,如果您搜索COM对象上的默认属性主题,我很确定还有一些文档可以解释它们.