0

我在 SO 上的另一个问题中找到了这行代码:

Comparer<TKey>.Default.Compare(x.Item1, y.Item1);

我正在尝试解析它,以便将其转换为 VB.net。首先,我尝试了一个在线转换器,它产生了这个:

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

但这会返回一个错误,指出 Comparer 没有类型参数。这是因为 VisualBasic 库有一个正在踩这个的比较器吗?还是因为我以前没有见过的 [Default] 语法?

4

2 回答 2

2

没错,您可能Comparer在范围内的名称与System.Collections.Generic.Comparer(Of T)非通用名称冲突。检查您的其他模块和导入,看看是否是这种情况。

周围的方括号Default可能是为了确保它不会被解释为关键字Default。但在这种情况下,这是完全没有必要的。

于 2018-05-28T19:44:56.790 回答
1

确保比较器来自 System.Collections.Generic。然后你可以这样写:

Comparer(Of YourClass).Default.Compare(x.Item1, y.Item1)

其中 x 和 y 的 Item1 是 YourClass 类型。

如果您使用的比较器不是来自泛型集合,它将显示该错误(比较器没有类型参数)。

于 2018-05-28T19:48:11.163 回答