Являются ли деревья выражений основным языком или функцией объекта/библиотеки BCL? Это то, что вы не можете построить без основных функций языка C#?Является ли деревья выражений основным языком C#?
ответ
Нет, деревья выражений не являются языковыми признаками. Они могут использоваться с любого языка .NET, поэтому они не могут быть C# специфическими. Это обычные типы CLR, определенные во встроенной сборке.
Конструкция с помощью лямбда-выражений (и LINQ) является спецификацией C#. Но вы всегда можете создать эквивалент Expression
вручную. Сам компилятор C# ничего не делает, кроме как испускать вызовы для известных статических методов построения Expression
. Вы можете проверить, что компилятор испустил, декомпилировав двоичный файл с Reflector, настроенным на старую версию .NET.
Являются ли деревья выражений внутренними API-интерфейсами .NET Framework, это не связанный с этим вопрос, но я не могу придумать какой-либо причины, по которой им нужно будет.
«Нет, они не являются языковой функцией. Они могут использоваться с любого языка .NET, поэтому они не могут быть C# специфическими». - Это неправильно. Они * являются языковой особенностью C# ... и F # ... и Visual Basic ... ---- Каждый должен знать синтаксис языка и т. Д., Чтобы фактически создать дерево выражений из текста в исходном файле. –
@Timothy: Нет, вы имеете в виду _lambda expressions_. _Those_ - это языковые функции. Сами классы «Выражение» - это просто обычные классы .NET. Все, что может использовать классы .NET, может использовать классы 'Expression'. –
@JeffMercado Oh ... правый. Я думал, что исходный вопрос касался функции лямбда-выражения-к-экспрессии, а не самих «выражений». Да, это не языковые особенности. :) –
Как вы можете видеть из определения класса Expression
, оно определено в пространстве имен System.Linq.Expressions
. Это выражение не является языком языка C# - это класс, который расходуется всеми языками, ориентированными на CLR.
Вот, например, статья на MSDN под названием «Expression Trees (C# and Visual Basic)», иллюстрирующая создание и использование деревьев выражений с использованием C# и VB.NET.
- 1. Является ли C++ свободным языком?
- 2. Являются ли деревья выражений потокобезопасными?
- 3. Поддерживает ли Kotlin деревья выражений?
- 4. Является ли Swift единственным (основным) языком с арифметикой проверки переполнения?
- 5. Деревья выражений как двоичные деревья
- 6. Является ли jQuery языком?
- 7. Деревья выражений в NHibernate
- 8. Является ли C# языком высокого уровня?
- 9. Является ли C++ объектно-ориентированным языком?
- 10. Является ли C++ полностью объектно-ориентированным языком?
- 11. Является ли этот код C++ основным или основным?
- 12. Является ли UML языком программирования?
- 13. Деревья выражений Java
- 14. Как использовать деревья выражений
- 15. Как ограничить GLSL основным языком?
- 16. Является ли конкретным языком API
- 17. DynamicMethods, деревья выражений и DLR
- 18. Будет ли F # когда-либо быть основным языком, как C#? Или это останется нишевым языком?
- 19. Собрание выражений Деревья недоразумения?
- 20. Деревья выражений, сопоставление объектов
- 21. Комбинирование деревья выражений
- 22. Объединяя несколько выражений деревья
- 23. Деревья выражений .net
- 24. Деревья выражений в DataTable
- 25. Python Деревья выражений
- 26. Есть ли деревья выражений, эквивалентные FormatterServices.GetUninitializedObject()?
- 27. Являются ли деревья выражений LINQ завершенными?
- 28. C# 4.0: деревья выражений против CodeDom
- 29. C# Деревья выражений - поиск динамического значения
- 30. Является ли bash интерпретируемым языком?
В той мере, в какой существует неявный отбор из лямбда формы 'Func' '' Expression > ', что компилятор должен делать во время компиляции, я так думаю. –
Вы можете использовать методы builder вместо перевода лямбда-выражения в дерево выражений. Но это * много * более подробный. – CodesInChaos
В какой части функции вы спрашиваете? – SLaks