Ограничения динамического типа в C #

Не могли бы вы назвать мне некоторые причины ограничений динамического типа в C #? Я читал о них в "Pro C # 2010 и .NET 4 платформа ". Вот отрывок (если цитирование книг здесь незаконно, скажите мне, и я удалю отрывок):

Хотя очень многое можно

Не могли бы вы назвать причины ограничений динамического типа в C #? Я читал о них в «Pro C # 2010 и платформе .NET 4». Вот отрывок (если цитирование книг здесь незаконно, скажите мне, и я удалю отрывок):

Хотя очень многое можно

Не могли бы вы назвать причины ограничений динамического типа в C #? Я читал о них в «Pro C # 2010 и платформе .NET 4». Вот отрывок (если цитирование книг здесь незаконно, скажите мне, и я удалю отрывок):

Хотя очень многое можно определяется с помощью ключевого слова dynamic, есть некоторые ограничения относительно его использование. Пока их не показывают стопоры, знайте, что динамические данные элемент не может использовать лямбда выражения или анонимные методы C # при вызове метода. Например, следующий код всегда будет результатом в ошибках, даже если целевой метод действительно принимает параметр делегата который принимает строковое значение и возвращает недействительна.

 динамический a = GetDynamicObject ();
// Ошибка! Методы динамических данных не могут использовать лямбды!
a.Method (arg => Console.WriteLine (arg));

Чтобы обойти это ограничение, вы нужно будет работать с базовым делегировать напрямую, используя методы, описанные в главе 11 (анонимные методы и лямбда выражения и т. д.). Еще одно ограничение в том, что динамическая точка данных не может понимать любые методы расширения (см. Глава 12). К сожалению, это также включить любое расширение методы, которые поступают из LINQ API. Следовательно, переменная, объявленная с ключевое слово dynamic очень ограничено использовать в LINQ to Objects и других Технологии LINQ:

 динамический a = GetDynamicObject (); 
// Ошибка! Динамические данные не могут найти метод расширения Select ()!
var data = from d в select d;

Заранее спасибо.

5
задан John Saunders 28 August 2010 в 01:34
поделиться