Можно ли передавать объекты по ссылке с ключевым словом params?

Я хотел бы передать много аргументов методу by ref, но я не знаю количество аргументов.

Я пробовал что-то подобное, но это не работает: D:

public void myMethod(ref params object args)

Я подумаю, чтобы передать указатели в параметрах, но не сложно ли это в С#:/

Возможный обходной путь?

РЕДАКТИРОВАТЬ:

Я хочу инкапсулировать часть кода, в основном так:

....

var collectionA = new List<string>();
var myObject = // an object
Optimizer.Optimize(ref collectionA, ref myObject); // cache
//{

MaClass.Treatment(); // use collectionA stored in cache via Optimizer

// the collectionA is modified in MaClass.Treatment()
...

//}
Optimizer.EndOptimize();
...

Цель: не могу постоянно запрашивать у моего сервера одну и ту же обработку (HTTPRequest), если вызов был инкапсулирован в мой оптимизатор.


person Adwelean    schedule 03.10.2016    source источник
comment
Вам действительно нужно передавать их по ссылке? Вы пытаетесь назначить новые объекты в методе? Или это примитивные типы, которым вы присваиваете новые значения? Если ответ на оба вопроса отрицательный, то вам, скорее всего, не нужно проходить мимо исх.   -  person Matthew Watson    schedule 03.10.2016


Ответы (1)


Нет, это невозможно. Однако вы можете получить многое того же самого, изменив массив в методе, а затем просто прочитав значения обратно из массива на месте вызова:

var args = new[] {x, y, z}
obj.myMethod(args);
x = args[0];
y = args[1];
z = args[2];

(который можно тривиально обобщить на ряд аргументов, известных только во время выполнения)

person Marc Gravell    schedule 03.10.2016
comment
Здорово ! не лучшее решение для моего кода, но я не знал этого трюка, спасибо @MarcGravell - person Adwelean; 03.10.2016