Einschränkungen des dynamischen Typs in C #

Könnten Sie mir Gründe für Einschränkungen des dynamischen Typs in C # nennen? Ich habe darüber in "Pro C # 2010 und der .NET 4-Plattform" gelesen. Hier ist ein Auszug (wenn das Zitieren von Büchern hier illegal ist, sag es mir und ich werde den Auszug entfernen):

Während mit dem Schlüsselwort dynamic sehr viele Dinge definiert werden können, gibt es einige Einschränkungen hinsichtlich der Verwendung. Beachten Sie, dass ein dynamisches Datenelement beim Aufrufen einer Methode keine Lambda-Ausdrücke oder anonymen C # -Methoden verwenden kann, obwohl es sich nicht um Show-Stopper handelt. Der folgende Code führt beispielsweise immer zu Fehlern, selbst wenn die Zielmethode tatsächlich einen Delegatparameter verwendet, der einen Zeichenfolgenwert annimmt und void zurückgibt.

dynamic a = GetDynamicObject(); 
// Error!  Methods on dynamic data can’t use lambdas! 
a.Method(arg => Console.WriteLine(arg));

Um diese Einschränkung zu umgehen, müssen Sie direkt mit dem zugrunde liegenden Delegaten arbeiten und die in Kapitel 11 beschriebenen Techniken anwenden (anonyme Methoden und Lambda-Ausdrücke usw.). Eine weitere Einschränkung besteht darin, dass ein dynamischer Datenpunkt keine Erweiterungsmethoden verstehen kann (siehe Kapitel 12). Leider würde dies auch eine der Erweiterungsmethoden einschließen, die von den LINQ-APIs stammen. Daher kann eine mit dem Schlüsselwort dynamic deklarierte Variable in LINQ to Objects und anderen LINQ-Technologien nur sehr eingeschränkt verwendet werden:

dynamic a = GetDynamicObject(); 
// Error!  Dynamic data can’t find the Select() extension method! 
var data = from d in a select d;

Danke im Voraus

Antworten auf die Frage(6)

Ihre Antwort auf die Frage