VB2005向ComboBox填充文件扩展名时Function附近报Expression Expected错原因
报错根因
- 语法特性版本不兼容:你使用的
Function(fi) fi.Extension这类Lambda匿名函数语法,是VB 9.0(对应Visual Studio 2008)才新增的特性,VB 2005的编译器不支持该语法,因此会在Function关键字位置抛出「Expression Expected」错误。 - 框架特性不兼容:代码中用到的
Select、OrderBy、Distinct都是LINQ扩展方法,属于.NET Framework 3.5及以上版本的功能,VB 2005默认基于.NET Framework 2.0运行,本身不存在这些方法,且这些方法属于System.Linq命名空间,和你引用的System.Collections无关。 - 变量声明错误:你将
extensions声明为String单值类型,但后续ToArray()返回的是字符串数组,正确声明应为Dim extensions As String()。
VB 2005兼容实现代码
Dim comboBox1 As New ComboBox() Dim caminho As String = "C:\Users\User1\Desktop\Test\" Dim dir As DirectoryInfo = New DirectoryInfo(caminho) Dim allFiles As FileInfo() = dir.GetFiles() ' 用SortedList同时实现去重+按文化排序,忽略扩展名大小写 Dim extList As New Collections.SortedList(StringComparer.CurrentCultureIgnoreCase) For Each fi As FileInfo In allFiles Dim ext As String = fi.Extension If Not extList.ContainsKey(ext) Then extList.Add(ext, Nothing) End If Next ' 提取所有唯一扩展名转为数组 Dim extensions As String() = New String(extList.Count - 1) {} extList.Keys.CopyTo(extensions, 0) comboBox1.Items.AddRange(extensions)
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

