제네릭 형식의 개체에 대한 참조를 전달하는 데 문제가 있습니다. 나는 'Object'를 생성하고 원본보다는 그 참조를 전달하는 방법을 발견했다. 그러나 그것은 나에게 조금은 냄새가 난다. 여기에 더 좋은 방법이 있을까요 아니면 함께 살 필요가 있습니까?제네릭 개체에 대한 참조를 매개 변수로 사용
첫 번째 오류는 이해하지만 두 번째 오류는 알지 못합니다.
public static T Foo<T>(ref T Bar)
{
T Result;
// Next line gives
// cannot convert from 'ref T' to 'ref object'
Result = (T)ModifyObject (ref Bar);
// Next line gives
// A ref or out argument must be an assignable variable
Result = (T)ModifyObject (ref ((Object)Bar));
// Works
Object Tmp = Bar;
Result = (T)ModifyObject (ref Tmp));
return Result;
}
public static Object DoSomthing(ref Object Obj) {
Object Result = Activator.CreateInstance (Obj.GetType())
//...
}
DoSomething은 Obj 유형이 변경 될 수있는 재귀를 사용하기 때문에 일반적이지 않습니다. 게시를 통해 더 좋은 옵션이 될 수 있지만 리플렉션을 사용하여 일반적인 버전을 호출하지 않으려 고 노력하고 있었습니까?
정말 참조로 전달해야합니까? DoSomething 내부에서 Obj에게 할당합니까? – Henrik
그리고 Foo에 맞습니까! –
(참조 정보에 대한 자세한 내용은 http://pobox.com/~skeet/csharp/parameters.html을 참조하십시오.) –