不能就是不能!
就像为什么定义变量要用 Dim 这样

解决方案 »

  1.   

    这里其实有较深层次的原因。涉及到VB中的
    赋值语句  X=Y
    和引用赋值语句  SET X=Y
    的区别问题。我们知道对简单数据类型变量应当使用赋值语句。其实VB中的一个X=Y隐含了许多操作,
    包括先对该变量重新分配地址空间,然后填充值的操作。这也正是为什么你在VB中总
    可以用一个简单的等于号就对字符串赋值,而在C里却不能这样做的原因。例如你连续
    执行:
    a="aaa"
    a="bbb"
    其实第二句之后的变量a地址跟第一句之后的已经毫无关系了。它并非在第一句时分配的
    空间上将"aaa",改成"bbb",而是进行了释放原空间、分配新空间、重新填充的连续操作。VB的集合添加元素时,并非将该元素复制一份,而是添加一个对它的引用。
    你可以将每个集合元素理解为一个地址。而该地址一旦被加入集合,地址本身将不可
    更改,但其内容可以更改。
    因此,你对集合元素使用赋值语句,就是无法执行的了。而对于对象变量,只有在每次NEW时才新分配空间,因此你将它添加到集合以后,
    只要从该集合获得此对象的引用,就可以改变其值。
      

  2.   

    Item是Collection的只读属性,就这么简单。
    如果希望修改Item的值,那么只有先删除,在添加一次。