Warum führt die generische Typeinschränkung in C# für mein Beispiel verschiedene Ergebnisse?C#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Warum führt die generische Typeinschränkung in C# für mein Beispiel verschiedene Ergebnisse?

Post by Anonymous »

Ich lerne generische Typenbeschränkungen in C#. Als ich mir das Beispiel einer Klassenstyp -Einschränkung ansah, sah ich, dass die Ausführung der überschriebenen Methode in der abgeleiteten Klasse vom Code dieser Methode in der Basisklasse abhängt. Ich verstehe nicht, warum. < /P>
Hier ist mein Beispiel: < /p>
B b = new B(10,20);
Print(b);
void Print(T t) where T : A
{
Console.WriteLine(t.Get());
}
class A
{
protected int a;
public A(int a){this.a = a;}
public A Get()
{
return this;
// return new A(a);
}
public override string ToString(){ return $"{a}"; }
}
class B : A
{
int b;
public B(int a, int b) : base(a){this.b = b;}
public B Get()
{
return this;
}
public override string ToString(){return $"{a}, {b}";}
}
< /code>
In einer solchen Variante wird das Ergebnis gedruckt: "10, 20". Vielleicht kann mir jemand eine Antwort geben, warum? Danke.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post