zurück
Autor:
Erstellt am: 02 Mär 2001 00:00

Namesausblendung in C#

C# , Überladung

Die Methodennamen in C# werden nicht auf der Grundlage
der Methodensignatur verborgen, sondern auf den Namen der Methode !!!

***********************************************************

using System;

public class ErsteKlasse
 {
   public int Funktion(int val)
   {
     Console.WriteLine("Klasse1.Funktion - {0}", val);
   }
 }

public class ZweiteKlasse:ErsteKlasse
 {
   public int Funktion(string val)
    {
      Console.WriteLine("Klasse2.Funktion - {0}", val);
    }
 }

class TestKlasse
{
 public static void Main()
  {
    ZweiteKlasse KL2 = new ZweiteKlass();
    KL2.Funktion("Das funktioniert");
    KL2.Funktion(7);   // Hier tritt ein Fehler auf !!!         
                                  // Was muss ich jetzt machen ??? 
    ((ErsteKlasse) KL2).Funktion(7); // jetzt gehts !!!
  }
}

*********************************************************************

Was ist passiert ?
Die beiden Funktionen >>Funktion(int val), Funtion(string val)<< befinden sich in unterschiedlichen
Klassen.
Die in der abgeleiteten Klasse >>ZweiteKlasse<< definierte Funktion >>Funktion()<< wird in der
BasisKlasse >>ErsteKlasse<< an allen Stellen ausgeblendet.
Eine (wenn nötige) Lösung wäre die Überladung.


© Copyright 2008 ppedv AG