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

C#中Comparer<TKey>.Default在VB.NET的等价写法及报错问题

问题根源与解决方案

这个报错的核心原因是VB.NET中存在两个同名的Comparer类型,导致编译器匹配到了错误的那个:

  • 一个是位于System.Collections的非泛型Comparer类,它确实不支持类型参数,这就是你看到"Comparer没有类型参数"错误的原因;
  • 另一个是位于System.Collections.Generic的泛型Comparer(Of T)类,这才是对应C#中Comparer<TKey>的正确类型。

在线转换器生成的代码里,[Default]的语法是没问题的——因为Default是VB.NET的关键字,当它作为属性名使用时,必须用方括号包裹来避免语法冲突,这部分转换是正确的,和报错无关。

解决方法

你有两种方式修复这个问题:

1. 显式指定泛型Comparer的命名空间

直接在代码中写出完整的命名空间,让编译器明确找到泛型版本:

System.Collections.Generic.Comparer(Of TKey).[Default].Compare(x.Item1, y.Item1)

2. 导入泛型命名空间(推荐)

在VB.NET文件的顶部添加Imports语句,导入System.Collections.Generic:

Imports System.Collections.Generic

之后就可以直接使用转换器生成的代码,编译器会自动匹配到泛型的Comparer(Of TKey):

Comparer(Of TKey).[Default].Compare(x.Item1, y.Item1)

内容的提问来源于stack exchange,提问作者Maury Markowitz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:39:30