代码之家  ›  专栏  ›  技术社区  ›  Maury Markowitz

相当于c。默认值。在vb.net中?

  •  0
  • Maury Markowitz  · 技术社区  · 7 年前

    我在这里的另一个问题中发现了这行代码,所以:

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

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

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

    但返回一个错误,说明比较器没有类型参数。这是因为VisualBasic库有一个步进此库的比较器吗?或者是因为我以前没见过的[默认]语法?

    2 回复  |  直到 7 年前
        1
  •  1
  •   monty    7 年前

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

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

    其中x和y的item1是yourclass类型。

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

        2
  •  2
  •   Jeff Mercado    7 年前

    是的,你可能有这个名字 Comparer 在与冲突的范围内 System.Collections.Generic.Comparer(Of T) 这不是一般的。检查您的其他模块和导入,看看情况是否如此。

    四周的方括号 Default 可能是为了确保它不会被解释为关键字 违约