You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 04:30:00