Avatar billede eonix Nybegynder
13. december 2006 - 13:45 Der er 6 kommentarer og
1 løsning

C++ Templates i C#

Hey allesammen,

Jeg sidder her med et forståelsesproblem

Jeg har et kode eksemple jeg har brug for at konverterer til C# - men da jeg ikke helt forstår hvad der sker i C++ eksemplet er det lidt svært - her er problemet:

I mit C++ eksempel bruges der følgende "definering"


template<class T, class M>



Hvis jeg skal lave noget tilsvarende i C# - hvordan kan man gøre dette ?

Håber der er nogle hajer derude der både ved hvordan dette bruges i C++ og i C# - og dermed kan forklarer mig hvad alternativet er i C#.

På forhånd tak

//EoniX
Avatar billede arne_v Ekspert
13. december 2006 - 14:57 #1
i C++ laver de noget kode som kan bruges for vilkaarlige data typer T og M

C# har noget lidt tilsvarende kaldet generics (i 2.0)

men der er dog ret store forskelle paa hvordan det virker, saa det er
langtfra sikkert at det er nemt at portere din C++ til C#

hvis du poster det efter den template erklaeringen kan vi kommentere mere
specifikt
Avatar billede gulbaek Nybegynder
13. december 2006 - 14:58 #2
Har lavet et lille eksempel hvordan du kan bruge template/generics i C# til metoder.

using System;

namespace Templates
{
    class Program
    {
        static void Main(string[] args)
        {
            int i = 1;
            int j = 4;
            Swap(ref i, ref j);

            Console.WriteLine("i = " + i);
            Console.WriteLine("j = " + j);

            float k = 2.4f;
            float h = 5.5f;
            Swap(ref k, ref h);

            Console.WriteLine("k = " + k);
            Console.WriteLine("h = " + h);

   
        }

        static void Swap<T>(ref T x, ref T y)
        {
            T temp;
            temp = x;
            x = y;
            y = temp;
        }
    }
}
Avatar billede gulbaek Nybegynder
13. december 2006 - 15:21 #3
Du får lige et nyt eksempel hvor jeg bruger en generics class også.

using System;

namespace Templates
{
    class Program
    {
        static void Main(string[] args)
        {
            MyGeneric<int> myGenericIntClass = new MyGeneric<int>();
            int i = 1;
            int j = 4;

            myGenericIntClass.Swap(ref i, ref j);

            Console.WriteLine("i = " + i);
            Console.WriteLine("j = " + j);

            MyGeneric<float> myGenericFloatClass = new MyGeneric<float>();

            float k = 2.4f;
            float h = 5.5f;
            myGenericFloatClass.Swap(ref k, ref h);

            Console.WriteLine("k = " + k);
            Console.WriteLine("h = " + h);
        }
    }
}


using System;

class MyGeneric<T>
{
    public MyGeneric()
    {

    }

    public void Swap(ref T x, ref T y)
    {
        T temp;
        temp = x;
        x = y;
        y = temp;
    }
}
Avatar billede eonix Nybegynder
13. december 2006 - 18:28 #4
Tak for det flotte eksemple gulbaek - men jeg har besluttet mig for at tage skridtet videre og rent faktisk kode skidtet i C++, - jeg vil dog gerne give jer begge points for den hurtige besvarelse.

Venlig hilsen

EoniX
Avatar billede gulbaek Nybegynder
13. december 2006 - 18:36 #5
svar
Avatar billede arne_v Ekspert
14. december 2006 - 00:45 #6
jeg tror at jeg springer over her
Avatar billede eonix Nybegynder
21. december 2006 - 12:18 #7
Done :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester