Реализация шаблонного поведения C ++ в C # - PullRequest
1 голос
/ 04 февраля 2009

У меня есть задание в независимом от языка классе, и часть его использует шаблонные функции, такие как


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

Я хотел бы написать эту программу на C #, но столкнулся с проблемой.

Как мне сделать эту работу в C #:

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

Ответы [ 3 ]

3 голосов
/ 04 февраля 2009

У вас есть два ответа, которые охватывают дженерики ... просто в сторону: необычно, когда C # требуется ref, поскольку вы уже передаете только ссылку (List<T> - объект ссылочного типа). ref требуется только в том случае, если вы назначаете новые списки внутри метода и хотите, чтобы клиент увидел переназначение. Изменения в списке (ах) уже будут видны без ref.

3 голосов
/ 04 февраля 2009

Если вы предполагали, что param2 будет List<U>

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

В противном случае:

T functionName<T>(ref List<T> param1, ref List<T> param2)
1 голос
/ 04 февраля 2009

Попробуйте что-то вроде этого (обратите внимание на <T,U> после названия функции):

T functionName<T,U>(ref List<T> param1, ref List<U> param2){
    // do stuff
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...