Heute schrieb ich ein kleines Programm, um die Grundlagen der optionalen Parameter von C# zu verstehen.Nicht in der Lage, die Ausgabe von Methoden mit optionalen Parameter zu verstehen
Im Anschluss an das Programm:
abstract class AbstractClass
{
internal abstract void Test();
}
sealed class DerivedClass : AbstractClass
{
internal override void Test()
{
Console.WriteLine("In override DerivedClass.Test() method");
}
internal void Test(int a = 1)
{
Console.WriteLine("In DerivedClass.Test(int a=1) method " + a);
}
internal void Test(int b, int a = 1)
{
Console.WriteLine("In DerivedClass.Test(int b, int a=1) method " + string.Format("{0} {1}", b, a));
}
}
Dies ist, wie ich Test()
Methode genannt:
DerivedClass d = new DerivedClass();
d.Test();
d.Test(6);
d.Test(b:7);
Ausgang:
In DerivedClass.Test (int a = 1) Methode 1
In DerivedClass.Test (int a = 1) Methode 6
In DerivedClass.Test (int b, int a = 1) Verfahren 7 1
d.Test();
Bezug: Hier mein Verständnis ist, wird es behandeln Test()
als Verfahren mit einem optionalen Parameter, und wird mit diesem Ausgang Test(int a = 1)
aufzurufen:
0.123.In DerivedClass.Test (int a = 1) Methode 1
Aber das ist, was mir verwirrt, wenn d.Test(6);
Ausführung: Warum dieser Methodenaufruf gibt nicht ausgegeben als:
In DerivedClass.Test (int b, int a = 1) Methode 6 1
gemäß meinem Verständnis „6“ ist der obligatorische Parameter und es sollte
internal void Test(int b, int a = 1)
Bitte rufen sie erklären, was mit meinem Verständnis falsch ist.
Wie kann man eine überschriebene Methode aufrufen?
internal override void Test()
Warum sollte 'Test (6)' 'Test aufrufen (int b, int a = 1)'? Es gibt bereits eine passende Methode 'Test (int a = 1)', die mit 'a' auf' 6' gesetzt wird. –
Bitte beachten Sie ["Sollten Fragen enthalten" -Tags "in ihren Titeln?"] (Http://meta.stackexchange.com/questions/19190/should-questions-include-tags-in-the-titles), wo der Konsens ist "nein, sollten sie nicht"! –
@Dennis_E Aber warum heißt 'Test (int a = 1)' im ersten Fall wenn es eine viel bessere Übereinstimmung ohne Params gibt? – HimBromBeere