2016-10-03 4 views
0

으로 많은 인수를 전달하고 싶지만 인수의 수를 알지 못합니다.params 키워드로 ref로 객체를 전달할 수 있습니까?

나는 이런 식으로 뭔가를 시도했지만 그것은 작동하지 않습니다 : D를 :

public void myMethod(ref params object args) 

내가 PARAMS의 포인터를 전달하는 데 생각하지만 그것은 약간의 C#으로 복잡 :/

가능한 해결 방법?

편집 : 기본적으로 이런 내가 코드의 일부를 캡슐화 할

:

....

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)

+0

* 정말 * ref로 전달해야합니까? 메소드에 새 객체를 지정하려고합니까? 아니면 새로운 값을 할당하는 기본 유형입니까? 두 질문에 대한 대답이 "아니오"이면 ref를 통과 할 필요가 없습니다. –

답변

2

아니요, 불가능합니다.

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

(사소 A를 일반화 할 수있다 : 그러나, 당신은 단순히 호출 사이트의 배열에서 다시 값을 읽는 다음 방법으로 배열을 돌연변이에 의해 동일한의 많은를 얻을 수 있습니다 런타임에만 알려진 인수 수)

+0

좋아요! 내 코드를위한 최선의 해결책은 아니지만 그 트릭을 알지 못했다. 덕분에 @MarcGravell – Adwelean

관련 문제