out
здесь не работает, потому что вы не можете использовать параметр out
в методе, пока он не будет назначен. Поскольку ваше назначение использует enum
(которое вы должны переименовать) как часть правой части, это не разрешено. Переключение out
на ref
заставит все работать.
Однако . Как я уже упоминал в своем ответе на ваш предыдущий (теперь удаленный) вопрос, пожалуйста, не делайте этого. Это намного более идиоматично при работе с последовательностями для возврата нового IEnumerable<T>
:
var newQuery = CreaPager(m_oPacchettiEnum, 1, 10);
private void CreaPager<T>(IEnumerable<T> enumeration, int limiteUp, int limiteDown)
{
return enumeration.Skip(limiteDown).Take(limiteUp);
}
Кроме того, вы можете сделать метод методом расширения , поставив перед первым параметром this
:
private void CreaPager<T>(this IEnumerable<T> enumeration, int limiteUp, int limiteDown) { .. }
Это позволит вам интегрировать ваш метод в цепочку вызовов LINQ-to-Objects:
var query = myEnumerable.Where(x => x.OtherProp == 1).CreaPager(1, 10).Select(x => x.SomeProp);
РЕДАКТИРОВАТЬ : Поскольку вам также необходимо вернуть string
, сделайте , что , параметр out
:
private void CreaPager<T>(this IEnumerable<T> enumeration, int limiteUp, int limiteDown, out string myString)
{
myString = "foo";
return enumeration.Skip(limiteDown).Take(limiteUp);
}
Вы бы назвали метод следующим образом:
string theString;
var newQuery = CreaPager(m_oPacchettiEnum, 1, 10, out theString);
out
здесь хорошо, так как я предполагаю, что вам не нужно одновременно использовать и назначать строку. И если вы это сделаете, то я бы предложил вам все равно разделить его на два параметра.