2009-02-03 4 views
1

J'ai une affectation dans une classe indépendante de la langue, et une partie de celui-ci est en utilisant des fonctions templated comme comportement de modèle comme application C++ en C#


    T functionName(T &param1[], T &param2[]){ 
     // do stuff 
    } 

Je voudrais écrire ce programme en C#, mais je J'ai rencontré un problème.

Comment puis-je faire ce travail en C#:

<pre><code> 
T functionName(ref List<T> param1, ref List<U> param2){ 
    // do stuff 
} 
</code></pre> 

?

Répondre

3

Si vous aviez l'intention param2 être List<U>

T functionName<T,U>(ref List<T> param1, ref List<U> param2) 

Sinon:

T functionName<T>(ref List<T> param1, ref List<T> param2) 
1

Essayez quelque chose comme ceci (notez le <T,U> après le nom de la fonction):

T functionName<T,U>(ref List<T> param1, ref List<U> param2){ 
    // do stuff 
} 
3

Vous avez deux réponses cover generics ... juste un aparté: il est inhabituel que C# ait besoin de ref, puisque vous passez déjà juste la référence (List<T> est un objet de type référence). Le code ref est nécessaire uniquement si vous affectez de nouvelles listes à la méthode et que le client souhaite voir la réaffectation. Les changements à la liste seront déjà visibles sans le ref.

+0

Ouais, j'allais publier ceci si vous ne l'aviez pas fait. –