Newbie Q zur Verwendung von Referenz- und generics

stimmen
1

dies ist das erste Mal, dass ich brauche Generika und Referenzen zu verwenden, und ich bin eine schwierige Zeit davon habe. Ich weiß, es ist etwas offensichtlich.

public class Program
{
    void SWAP<T>(ref T a, ref T b) { T dum = a; a = b; b = dum; }

    static void Main(string[] args)
    {
        double a = 1; double b = 2;
        double c = SWAP(a, b);

        Console.Write(a.ToString());        

        Console.Read();
    }
}

Auf debug SWAP (a, b) gibt den Fehler: Die beste überladene Methode für 'Program.SWAP (ref Doppel, ref double)' hat einige ungültige Argumente.

Vielen Dank für Ihre mit dieser Art von Fragen aufstellen, Victor

Veröffentlicht am 25/02/2010 um 22:12
vom benutzer
In anderen Sprachen...                            


2 antworten

stimmen
2

Ja .. Sie müssen die Werte in der ref-Tag übergeben

bearbeitet, bis es kompiliert

public class Program {
    static void SWAP<T>( ref T a, ref T b ) {
      T dum = a;
      a = b;
      b = dum;
    }

    static void Main( string[] args ) {
      double a = 1; double b = 2;
      SWAP<double>( ref a,ref  b );

      Console.Write( a.ToString() );

      Console.Read();
    }
  }
Beantwortet am 25/02/2010 um 22:14
quelle vom benutzer

stimmen
4

Wenn Sie eine Funktion aufrufen, die einen Sollwert verwendet, müssen Sie den Compiler anweisen, eine ref zu nehmen. Auch Ihre SWAP gibt keinen Wert.

So ist die Swap-Vereinbarung sollte

SWAP(ref a, ref b);
Beantwortet am 25/02/2010 um 22:15
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more