我在VBScript中遇到了ByVal的一些问题。这是我编写的一个快速示例脚本来说明问题:
<%
Option Explicit
dim PublicDict
Set PublicDict = createobject("Scripting.Dictionary")
PublicDict.Add "MyKey", "What's up doc?"
response.write OutputStringFromDictionary( PublicDict ) & "<br />"
response.write PublicDict("MyKey")
Set PublicDict = nothing
Function OutputStringFromDictionary( ByVal DictionaryParameter )
DictionaryParameter("MyKey") = replace(DictionaryParameter("MyKey"), "'", "''")
OutputStringFromDictionary = DictionaryParameter("MyKey")
end Function
%>
此脚本将这些行输出到浏览器:
什么是博士?
什么是博士?
我希望得到:
什么是博士?
怎么了文档?
如何使OutputStringFromDictionary
不修改原始字典?
答案 0 :(得分:2)
你必须以某种方式克隆实际数据。按值传递字典可防止字典本身被修改,但您仍然可以指向字典引用的相同项目。您无法修改字典,但可以修改它包含的项目。