(C #) por que o Visual Studio diz que é um objeto enquanto o GetType diz que é um Func <object>?

C # novato pergunta aqui. O código a seguir (tirado do livro "C # From Novice to Professional" por Christian Gross, Apress) dá um erro:

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

A razão é que o métodoDoAdd() não aceita os argumentos dados.

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

VS alega que ambos os argumentos na chamada de método acima são do tipoobject enquanto o método aceita apenasFunc<object>. Mas ovalor dos dois elementos da planilha é do tipoFunc<object>:

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

onde issoStatic método apenas retorna o valor dado:

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

Quando eu façoworksheet["A2"] ComoFunc<object>, o código funciona.

Mas há algo que não entendo. O tipo da instância do objeto éFunc<object>. Eu usei oGetType() método para ver a prova disso, e comparar os tipos de objetos dos elementos originais com os do objeto de elenco (que é aceito):

<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>

.. e eles são todos idênticos! (Tipo =System.Func'1[System.Object])

E mesmo quando eu uso o.Equals() método para comparar os dois tipos, retornatrue.

No entanto, o VS vê a primeira instância do objeto como tipoobject na chamada do método. Por quê? Por que o método chamado 'vê' o argumento como um tipo diferente do que o GetType () retorna? (e se sim, que bom é oGetType() método?)

Muito obrigado pelo seu conselho / comentários! (É meio difícil aprender a língua se os exemplos do livro derem um erro e você não perceber o motivo - daí a impressão vaga de que algo está errado ouGetType() ou VS.)

questionAnswers(3)

yourAnswerToTheQuestion