C++ 到 C# 的转换

C++ to C# conversion

我是 C# 的新手,我正在练习,将 C++ 中的一些代码转换为 C#。 但卡在这里,不知道如何将此函数转换为 C#,它采用任何集合、它的第一个元素和最后一个元素并在其中添加一个元素。

    template<class _Col>
void __insert
    (
    _Col&                   collection,
    typename _Col::iterator first,
    typename _Col::iterator last
    )
{
    for ( ; first != last; ++first )
    {
        collection.insert( *first );
    }
}

让我试着解释一下:

  1. 这是一个通用函数。
  2. 它用于收集。在我们的例子中使用迭代器 IList<Type>System.Collections.Generic 命名空间收集的接口。

让我们开始吧:

据我所知,C# 默认容器不提供迭代器功能,所以我通过使用 IList<Type> 接口替换它,提供类似于迭代器索引。

如你所见,这样做并不好

template<class _Col>
void __insert
    (
    _Col&                   collection,
    typename _Col::iterator first,
    typename _Col::iterator last
    )
{
    for ( ; first != last; ++first )
    {
        collection.insert( *first );
    }
}

因为 _Col 不仅可以包含模板集合 classes,还可以包含任何其他 class,如果其他 class 不会扩展编译过程的适当接口失败。同样是迭代器,它有很多种。

所以我强烈建议您遵守约定,如果您考虑将模板类型用作函数中的某种集合,请尝试在参数上使用 collection<Type> 声明,并在上使用 funcName<Type>功能。这将确保您以正确的方式处理数据。

static void Insert<Type>(IList<Type> outputCollection, IList<Type> inputCollection,  int start, int end)
{
      if (end >= inputCollection.Count)
         return;

      for (int i = start; i < end; i++)
          outputCollection.Add(inputCollection[i]);
}