Преобразование C ++ в C #

Я новичок в C #, я делаю свою практику, конвертируя некоторый код из C ++ в C #.
Но застряли здесь, не знаю, как преобразовать эту функцию в C #, который берет любую коллекцию, ее 1-й элемент и ее последний элемент и добавляет элемент в нее.

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

-2

Решение

Позвольте мне попытаться объяснить:

  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 может содержать не только классы коллекции шаблонов, но также и любой другой класс, и если этот другой класс не будет распространяться должным образом на интерфейс, процесс компиляции завершится неудачно. То же самое для итераторов, есть много типов.

Поэтому я настоятельно рекомендую придерживаться соглашения, что, если вы решите использовать тип шаблона в качестве некоторого набора функций, попробуйте использовать 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]);
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]