Я новичок в 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 );
}
}
Позвольте мне попытаться объяснить:
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]);
}
Других решений пока нет …