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.
Warum führt die generische Typeinschränkung in C# für mein Beispiel verschiedene Ergebnisse? ⇐ C#
-
- Similar Topics
- Replies
- Views
- Last post
-
-
Python generische Typevar, die an die generische Basisklasse gebunden ist
by Anonymous » » in Python - 0 Replies
- 12 Views
-
Last post by Anonymous
-