public object MethodName(ref float y)
{
//method
}
이 메서드에 대해 Func 대리자를 어떻게 정의합니까?ref 변수를 사용하여 Func 대리인
public object MethodName(ref float y)
{
//method
}
이 메서드에 대해 Func 대리자를 어떻게 정의합니까?ref 변수를 사용하여 Func 대리인
그것은 Func
수행 할 수 없지만 당신이에 대한 사용자 지정 delegate
를 정의 할 수 있습니다 : 당신은 또한 ref
유형이 방법을 지원할 수 4+ .NET에서
public object MethodWithRefFloat(ref float y)
{
return null;
}
public void MethodCallThroughDelegate()
{
MethodNameDelegate myDelegate = MethodWithRefFloat;
float y = 0;
myDelegate(ref y);
}
:
public delegate object MethodNameDelegate(ref float y);
사용 예를 ...
public delegate bool MyFuncExtension<in string, MyRefType, out Boolean>(string input, ref MyRefType refType);
죽은 스레드를 부활시키지는 못하지만이 방법으로 제네릭을 사용하여 ref 매개 변수를 지원할 수있는 반면 generic 형식 매개 변수는 불변 할 것입니다. 일반 형식 매개 변수는 C#의 ref 또는 out 매개 변수에 대한 분산 (공분산 또는 반항)을 지원하지 않습니다. 그래도 암시적인 타입 변환에 대해 걱정할 필요가 없다면 괜찮습니다. –
죄송합니다.이 답변은 약간 벗어났습니다. 델리게이트를 paramerizing하기 위해 보여주는'in'과'out'은 co-versus "contra-variance"와 관련이 있으며 OP가 요구하는 것과는 관련이 없습니다. 질문은 형식 매개 변수화와 관련하여 (일반) 대리자의 민첩성이 아니라 참조로 매개 변수를 수락 할 수있는 대리자에 대한 것입니다. –
이유 : 모든 제네릭 유형 인수는 전환 가능한 항목이어야합니다. 물체를 거부 할 수 있습니다. "ref float"는 객체로 변환 할 수 없으므로 일반 유형 인수로 사용할 수 없습니다. –
그 점에 대해 고마워 Func을 사용하는 데 어려움을 겪었으므로 유형이 객체로 변환 될 수없는 이유는 무엇입니까? – chugh97
이 경우 대리자 입력에 boxing/unboxing이 필요합니까? –