代码之家  ›  专栏  ›  技术社区  ›  edosoft

在经典ASP中使用字典中的类

  •  2
  • edosoft  · 技术社区  · 16 年前

    我通常做C#,但继承了一个经典的ASP项目。

    我定义了一个类:

        Class clsPayment    
            Public Name
        End Class
    
    Set objPayment = New clsPayment
    objPayment.Name = "StackOverflow payment"    
    

    还有一本字典:

    Set colPayments = CreateObject("Scripting.Dictionary")
    colPayments.Add 1, objPayment 
    

    稍后读取对象时,我无法调用公共字段:

    For i = 0 to colPayments.Count - 1
        objPayment = colPayments.Item(i)
        Response.Write(objPayment.Name)
    Next    
    

    这会在响应上引发错误。写入行:

    Microsoft VBScript运行时错误

    所需对象:“”

    我做错了什么?

    1 回复  |  直到 16 年前
        1
  •  6
  •   AnthonyWJones    16 年前

    将for循环更改为:-

    For Each key in colPayments
        Set objPayment = colPayments(key)
        Response.Write objPayment.Name
    Next
    

    使用“设置”指定对象 Set 将对象指定给变量时的关键字。

    这本字典不是真正的藏书 您似乎试图将字典用作序号集合,但事实并非如此。脚本字典严格地说是一个关联数组,没有可靠的顺序。与.NET字典不同 For Each

    使用过程语句时避免使用括号 请注意,对Response.Write的调用缺少parantises。当只有一个参数(它被解释为表达式)时,您经常会看到这些参数被成功使用,但当需要两个或多个参数时,这将是一个语法错误。

    推荐文章