VB的集合对象(Collection)内的 Item的值为什么不能修改???????? 不能就是不能!就像为什么定义变量要用 Dim 这样 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这里其实有较深层次的原因。涉及到VB中的赋值语句 X=Y和引用赋值语句 SET X=Y的区别问题。我们知道对简单数据类型变量应当使用赋值语句。其实VB中的一个X=Y隐含了许多操作,包括先对该变量重新分配地址空间,然后填充值的操作。这也正是为什么你在VB中总可以用一个简单的等于号就对字符串赋值,而在C里却不能这样做的原因。例如你连续执行:a="aaa"a="bbb"其实第二句之后的变量a地址跟第一句之后的已经毫无关系了。它并非在第一句时分配的空间上将"aaa",改成"bbb",而是进行了释放原空间、分配新空间、重新填充的连续操作。VB的集合添加元素时,并非将该元素复制一份,而是添加一个对它的引用。你可以将每个集合元素理解为一个地址。而该地址一旦被加入集合,地址本身将不可更改,但其内容可以更改。因此,你对集合元素使用赋值语句,就是无法执行的了。而对于对象变量,只有在每次NEW时才新分配空间,因此你将它添加到集合以后,只要从该集合获得此对象的引用,就可以改变其值。 Item是Collection的只读属性,就这么简单。如果希望修改Item的值,那么只有先删除,在添加一次。 创建窗体时出错。有关详细信息,请参阅 Exception.InnerException。 程序如何防止复制,即要求做到复制无效 通过DLL使用Winsock的问题!急,在线等! 超级多的图书免费下载 请问,VB有这种控件吗? 那里有VBOpenGL方面的资料!! 为什么此并发server发送到客户端成功且造成客户端关闭 请大家帮我解决一个数学问题,谢谢。 调查关于近视的问题。幸运中分!(禁止恶意灌水,否则,删) 怎么动态给DataEnvironment设置数据源?再给Command1设置SQL语句? 一个简单的算法!怎么没人回答??? VB如何实现telnet?必给分.
赋值语句 X=Y
和引用赋值语句 SET X=Y
的区别问题。我们知道对简单数据类型变量应当使用赋值语句。其实VB中的一个X=Y隐含了许多操作,
包括先对该变量重新分配地址空间,然后填充值的操作。这也正是为什么你在VB中总
可以用一个简单的等于号就对字符串赋值,而在C里却不能这样做的原因。例如你连续
执行:
a="aaa"
a="bbb"
其实第二句之后的变量a地址跟第一句之后的已经毫无关系了。它并非在第一句时分配的
空间上将"aaa",改成"bbb",而是进行了释放原空间、分配新空间、重新填充的连续操作。VB的集合添加元素时,并非将该元素复制一份,而是添加一个对它的引用。
你可以将每个集合元素理解为一个地址。而该地址一旦被加入集合,地址本身将不可
更改,但其内容可以更改。
因此,你对集合元素使用赋值语句,就是无法执行的了。而对于对象变量,只有在每次NEW时才新分配空间,因此你将它添加到集合以后,
只要从该集合获得此对象的引用,就可以改变其值。
如果希望修改Item的值,那么只有先删除,在添加一次。