2009-2010-2期末考试课程《基于.NET的开发技术》的A卷(在2010-2011-1期初开学补考中被用作补考试卷)中,有一道试题,要求用VB语言给出代码。具体题目是这样的:
有控件Listbox1、Listbox2、Button1、Button2,要实现:单击Button1可将Listbox1中多个选中项同时转移到Listbox2中;单击Button2可将Listbox2中多个选中项同时转移到Listbox1中,请补全下面阴影部分所需代码(不一定是一行)。
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Handles Button1.Click
End Sub
Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Handles Button2.Click
End Sub
为讨论方便,假定第一个阴影部分为A,第二个阴影部分为B。
有一个同学给出的答案是这样的:
A部分:
B部分:
将该同学的代码录入VS2005后,以A部分为例,提示如图1中所示:
图1
调试运行:按Ctrl+F5运行该同学的代码,则根本无法通过编译,提示共4个语法错误:A部分的如上的两个错误+B部分同样的两个错误。
代码评点:由于A与B的错误一样,这里以A为例,分析和挖掘所有显式(VS2005给出提示的)或隐式的错误。
- 错误1:显式的,行1中的第一个提示的错误。原因:行1中的变量item未经声明就使用。改进建议:先声明再使用。
- 错误2:显式的,行1中的第二个提示的错误。原因:行1中的属性SelectedItems根本不存在,属于作者臆想而用。改进建议:去做实验,找一个合适的属性来使用。
- 错误3:上面的两个错误
出现“集合已修改;可能无法执行枚举操作”的错误,如图2所示: