Je peux passer une méthode avec un paramètre de sortie comme un Func ?
Func a besoin d’un type donc out ne compile il, et listFunction l’appel requiert un type int et ne permet pas une sortie en.
Y a-t-il un moyen de faire cela ?
Je peux passer une méthode avec un paramètre de sortie comme un Func ?
Func a besoin d’un type donc out ne compile il, et listFunction l’appel requiert un type int et ne permet pas une sortie en.
Y a-t-il un moyen de faire cela ?
L' Func
de la famille des délégués (ou Action
d'ailleurs) ne sont rien, mais simple délégué des types déclarés comme
//.NET 4 and above
public delegate TResult Func<out TResult>()
public delegate TResult Func<in T, out TResult>(T obj)
//.NET 3.5
public delegate TResult Func<T1, T2, TResult>(T1 obj1, T2 obj2)
public delegate TResult Func<T1, T2, T3, TResult>(T1 obj1, T2 obj2, T3 obj3)
etc. Les délégués peuvent avoir/ref paramètres, donc dans votre cas son seulement une question de coutume de mise en œuvre par vous-même comme d'autres réponses ont souligné. Pourquoi Microsoft n'a pas ce pack par défaut, pensez à le grand nombre de combinaisons qu'il exigerait.
delegate TResult Func<T1, T2, TResult>(T1 obj1, T2 obj2)
delegate TResult Func<T1, T2, TResult>(out T1 obj1, T2 obj2)
delegate TResult Func<T1, T2, TResult>(T1 obj1, out T2 obj2)
delegate TResult Func<T1, T2, TResult>(out T1 obj1, out T2 obj2)
pour seulement deux paramètres. Nous n'avons pas encore touché ref
. Il serait fastidieux et source de confusion pour les développeurs.
Vous pourriez l’envelopper dans une lambda/délégué/fonction/méthode exposée la bonne interface et appelé FindForBar, mais je soupçonne que FindForBar a comte comme paramètre de sortie comme une raison, donc vous auriez besoin jeter pour s’assurer que l’information était OK/safe/souhaitable/a les bons résultats (vous auriez besoin pour être sûr de cela même si vous pouvez juste passer en FindForBar).
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.