Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Espacio de nombres System.Linq.Expressions

 

Publicado: octubre de 2016

El System.Linq.Expressions espacio de nombres contiene clases, interfaces y enumeraciones que permiten expresiones de código de nivel de lenguaje ser representado como objetos en forma de árboles de expresión.

ClaseDescripción
System_CAPS_pubclassBinaryExpression

Representa una expresión que tiene un operador binario.

System_CAPS_pubclassBlockExpression

Representa un bloque que contiene una secuencia de expresiones en la que se pueden definir variables.

System_CAPS_pubclassCatchBlock

Representa una instrucción catch de un bloque try.

System_CAPS_pubclassConditionalExpression

Representa una expresión que tiene un operador condicional.

System_CAPS_pubclassConstantExpression

Representa una expresión que tiene un valor constante.

System_CAPS_pubclassDebugInfoExpression

Emite o borra un punto de secuencia para obtener información de depuración. Esto permite que el depurador resalte el código fuente correcto al depurar.

System_CAPS_pubclassDefaultExpression

Representa el valor predeterminado de un tipo o una expresión vacía.

System_CAPS_pubclassDynamicExpression

Representa una operación dinámica.

System_CAPS_pubclassDynamicExpressionVisitor

Representa un visitante o un sistema de reescritura para los árboles de expresión dinámica.

System_CAPS_pubclassElementInit

Representa un inicializador para un solo elemento de una colección IEnumerable.

System_CAPS_pubclassExpression

Proporciona la clase base de la que se derivan las clases que representan los nodos de árbol de expresión. También contiene métodos de generador static (Shared en Visual Basic) para crear los diversos tipos de nodo. Esta es una clase abstract.

System_CAPS_pubclassExpression<TDelegate>

Representa una expresión lambda fuertemente tipada como una estructura de datos con el formato de un árbol de expresión. Esta clase no puede heredarse.

System_CAPS_pubclassExpressionVisitor

Representa un visitante o un sistema de reescritura para los árboles de expresión.

System_CAPS_pubclassGotoExpression

Representa un salto incondicional. Esto incluye instrucciones return, instrucciones break y continue, y otros saltos.

System_CAPS_pubclassIndexExpression

Representa la indización de una propiedad o una matriz.

System_CAPS_pubclassInvocationExpression

Representa una expresión que aplica un delegado o una expresión lambda a una lista de expresiones de argumento.

System_CAPS_pubclassLabelExpression

Representa una etiqueta, que se puede colocar en cualquier Expression contexto. Si se salta a, obtendrá el valor proporcionado por el correspondiente GotoExpression. De lo contrario, recibe el valor en DefaultValue. Si la Type es igual a System.Void, no se debe proporcionar ningún valor.

System_CAPS_pubclassLabelTarget

Utilizado para representar el destino de un GotoExpression.

System_CAPS_pubclassLambdaExpression

Describe una expresión lambda. Captura un bloque de código similar a un cuerpo de método. NET.

System_CAPS_pubclassListInitExpression

Representa una llamada de constructor que tiene un inicializador de colección.

System_CAPS_pubclassLoopExpression

Representa un bucle infinito. Puede terminar con "break".

System_CAPS_pubclassMemberAssignment

Representa la operación de asignación de un campo o una propiedad de un objeto.

System_CAPS_pubclassMemberBinding

Proporciona la clase base de la que se derivan las clases que representan los enlaces usados para inicializar los miembros de un objeto recién creado.

System_CAPS_pubclassMemberExpression

Representa el acceso a un campo o una propiedad.

System_CAPS_pubclassMemberInitExpression

Representa la llamada a un constructor y la inicialización de uno o más miembros del objeto nuevo.

System_CAPS_pubclassMemberListBinding

Representa la inicialización de los elementos de un miembro de la colección de un objeto recién creado.

System_CAPS_pubclassMemberMemberBinding

Representa la inicialización de los miembros de un miembro del objeto recién creado.

System_CAPS_pubclassMethodCallExpression

Representa una llamada a un método estático o de instancia.

System_CAPS_pubclassNewArrayExpression

Representa la creación de una nueva matriz y la posible inicialización de sus elementos.

System_CAPS_pubclassNewExpression

Representa una llamada al constructor.

System_CAPS_pubclassParameterExpression

Representa una expresión de parámetro con nombre.

System_CAPS_pubclassRuntimeVariablesExpression

Una expresión que proporciona permiso de lectura y escritura en tiempo de ejecución para las variables.

System_CAPS_pubclassSwitchCase

Representa un caso de un SwitchExpression.

System_CAPS_pubclassSwitchExpression

Representa una expresión de control que administra varias selecciones pasando el control a SwitchCase.

System_CAPS_pubclassSymbolDocumentInfo

Almacena la información necesaria para emitir información de símbolos de depuración para un archivo de origen, en particular, el nombre de archivo y el identificador de idioma único.

System_CAPS_pubclassTryExpression

Representa un bloque try/catch/finally/fault.

System_CAPS_pubclassTypeBinaryExpression

Representa una operación entre una expresión y un tipo.

System_CAPS_pubclassUnaryExpression

Representa una expresión que tiene un operador unario.

InterfazDescripción
System_CAPS_pubinterfaceIArgumentProvider

Proporciona una interfaz interna para acceder a los argumentos de varios nodos de árbol (DynamicExpression, ElementInit, MethodCallExpression, InvocationExpression, NewExpression e InexExpression). No se debe usar esta API. Solo es pública debido a la refactorización de la DLL y existe únicamente para optimizaciones de rendimiento interno.

Esto permite dos optimizaciones que reducen el tamaño de los árboles de expresiones. La primera permite a los nodos de árbol utilizar una interfaz IList<T> en lugar de ReadOnlyCollection. IList<T> ahorra el costo de asignar ReadOnlyCollection a cada nodo. La segunda permite crear subclases especializadas que utilizan un número específico de argumentos (por ejemplo, Block2, Block3, Block4). Por lo tanto, estos nodos evitan asignar ReadOnlyCollection y una matriz para almacenar sus elementos, lo que permite ahorrar 32 bytes por nodo.

Los nodos de los árbol de expresiones siguen exponiendo las propiedades LINQ originales de ReadOnlyCollections. Para ello, los nodos vuelven a usar un campo para almacenar la matriz o un elemento que normalmente se almacenaría en la matriz.

En el caso de la matriz, se asigna a la colección el tipo IList<T> en lugar de ReadOnlyCollection<T>. Cuando el nodo se construye inicialmente es una matriz. Cuando el compilador accede a los miembros usa esta interfaz. Cuando se accede a los elementos de la matriz, la matriz se promueve a ReadOnlyCollection.

En el caso del objeto, el primer argumento se almacena en un campo con tipo de objeto. Cuando el nodo se construye inicialmente, el campo contiene la expresión. El compilador accede a los argumentos a través de esta interfaz, y el descriptor de acceso del primer argumento usa Expression.ReturnObject para devolver el objeto que controla el caso de la expresión o ReadOnlyCollection. Cuando el usuario accede a ReadOnlyCollection, se actualiza el campo de objeto para que utilice directamente ReadOnlyCollection.

Es importante que las expresiones devuelvan constantemente la misma ReadOnlyCollection. En caso contrario, se interrumpirá el rastreador del árbol del sistema de reescritura. Es un cambio importante con respecto a LINQ v1 devolver diferentes ReadOnlyCollections a partir del mismo nodo de expresión. Actualmente los usuarios pueden confiar en la identidad del objeto para saber si el nodo cambió. Si se almacena ReadOnlyCollection en un campo sobrecargado, se reduce el uso de memoria y se mantiene la compatibilidad con la API pública.

System_CAPS_pubinterfaceIDynamicExpression

Proporciona una interfaz interna para acceder a los argumentos de los nodos del árbol de DynamicExpression, así como a la funcionalidad de sitio de llamada y reescritura. No se debe usar esta API. Solo es pública debido a la refactorización de la DLL y existe únicamente para optimizaciones de rendimiento interno.

EnumeraciónDescripción
System_CAPS_pubenumExpressionType

Describe los tipos de nodo para los nodos de un árbol de expresión.

System_CAPS_pubenumGotoExpressionKind

Especifica qué tipo de salto esto GotoExpression representa.

System_CAPS_pubenumMemberBindingType

Describe los tipos de enlace que se utilizan en MemberInitExpression objetos.

La clase abstracta Expression proporciona la raíz de una jerarquía de clases que se utiliza para árboles de expresión de modelo.

Las clases de este espacio de nombres que se derivan de Expression, por ejemplo MemberExpression y ParameterExpression, se utilizan para representar los nodos en un árbol de expresión. La Expression clase contiene static (Shared en Visual Basic) los métodos de generador para crear los nodos de árbol de los diversos tipos de expresión.

El tipo de enumeración ExpressionType especifica los tipos de nodo único.

Volver al principio
Mostrar: