(C #) Warum sagt Visual Studio, dass es sich um ein Objekt handelt, während GetType sagt, dass es sich um ein Func <Objekt> handelt?

C # Neuling Frage hier. Der folgende Code (entnommen aus dem Buch "C # From Novice to Professional" von Christian Gross, Apress) gibt einen Fehler aus:

<code>worksheet.Add("C3", CellFactories.DoAdd(worksheet["A2"], worksheet["B1"]));
</code>

Der Grund ist, dass die MethodeDoAdd() akzeptiert die angegebenen Argumente nicht.

<code>public static Func<object> DoAdd(Func<object> cell1, Func<object> cell2) {...}
</code>

VS behauptet, dass beide Argumente im obigen Methodenaufruf vom Typ sindobject wohingegen die Methode nur akzeptiertFunc<object>. Aber dieWert der beiden Arbeitsblattelemente ist vom TypFunc<object>:

<code>worksheet.Add("A2", CellFactories.Static(10.0));
</code>

wo diesStatic Methode gibt nur den angegebenen Wert zurück:

<code>public static Func<object> Static(object value) { return () => value; }
// return type= Func<object>
</code>

Wenn ich wirkeworksheet["A2"] wieFunc<object>funktioniert der Code.

Aber es gibt etwas, das ich nicht verstehe. Der Typ der Objektinstanz istFunc<object>. Ich habe das benutztGetType() Methode, um den Beweis dafür zu sehen und die Objekttypen der ursprünglichen Elemente mit denen des gegossenen Objekts zu vergleichen (was akzeptiert wird):

<code>Console.Writeline(worksheet["A2"].GetType());

// now cast to the correct type (why can't it do that implicitly, btw?)
Funk1 = worksheet["A2"] as Func<object>;

Console.Writeline(Funk1.GetType());
</code>

.. und sie sind ALLE identisch! (Typ =System.Func'1[System.Object])

Und auch wenn ich das benutze.Equals() Methode, um beide Typen zu vergleichen, gibt es zurücktrue.

VS sieht die erste Objektinstanz jedoch als Typobject im Methodenaufruf. Warum? Warum 'sieht' die aufgerufene Methode das Argument als einen anderen Typ als GetType ()? (und wenn ja, was nützt das?GetType() Methode?)

Vielen Dank für Ihre Ratschläge / Kommentare! (Es ist ein bisschen schwierig, die Sprache zu lernen, wenn die Buchbeispiele einen Fehler enthalten und man den Grund nicht sieht - daher der vage Eindruck, dass auch etwas nicht stimmtGetType() oder VS.)

Antworten auf die Frage(3)

Ihre Antwort auf die Frage