System.Linq.Expressions Namespace

System.Linq.Expressions Przestrzeń nazw zawiera klasy, interfejsy i wyliczenia, które umożliwiają kodu poziomu języka wyrażeń może być reprezentowana jako obiekty w postaci drzew wyrażeń. The System.Linq.Expressions namespace contains classes, interfaces and enumerations that enable language-level code expressions to be represented as objects in the form of expression trees.

Klasy

BinaryExpression

Reprezentuje wyrażenie zawiera operator binarny.Represents an expression that has a binary operator.

BlockExpression

Reprezentuje blok, który zawiera sekwencję wyrażeń, w którym można zdefiniować zmienne.Represents a block that contains a sequence of expressions where variables can be defined.

CatchBlock

Reprezentuje do instrukcji catch w bloku try.Represents a catch statement in a try block.

ConditionalExpression

Reprezentuje wyrażenie zawiera operator warunkowy.Represents an expression that has a conditional operator.

ConstantExpression

Reprezentuje wyrażenie zawiera wartość stałą.Represents an expression that has a constant value.

DebugInfoExpression

Emituje lub czyści punktu sekwencji, aby uzyskać informacje o debugowaniu.Emits or clears a sequence point for debug information. Dzięki temu debugera wyróżnić poprawnego źródła kodu podczas debugowania.This allows the debugger to highlight the correct source code when debugging.

DefaultExpression

Reprezentuje wartość domyślną typu lub puste wyrażenie.Represents the default value of a type or an empty expression.

DynamicExpression

Reprezentuje operację dynamiczną.Represents a dynamic operation.

DynamicExpressionVisitor

Reprezentuje obiekt odwiedzający lub dysków dla drzew wyrażeń dynamicznych.Represents a visitor or rewriter for dynamic expression trees.

ElementInit

Reprezentuje inicjator dla pojedynczego elementu IEnumerable kolekcji.Represents an initializer for a single element of an IEnumerable collection.

Expression

Udostępnia klasę bazową, z którego są uzyskiwane klas, które reprezentują węzły drzewa wyrażeń.Provides the base class from which the classes that represent expression tree nodes are derived. Zawiera ona także static (Shared w języku Visual Basic) metodami factory, aby utworzyć różne typy węzłów.It also contains static (Shared in Visual Basic) factory methods to create the various node types. Jest to abstract klasy.This is an abstract class.

Expression<TDelegate>

Reprezentuje wyrażenie lambda silnie typizowane jako struktury danych w formie drzewa wyrażenie.Represents a strongly typed lambda expression as a data structure in the form of an expression tree. Klasa ta nie może być dziedziczona.This class cannot be inherited.

ExpressionVisitor

Reprezentuje obiekt odwiedzający lub dysków dla drzew wyrażeń.Represents a visitor or rewriter for expression trees.

GotoExpression

Reprezentuje bezwarunkowe przeskoku.Represents an unconditional jump. Dotyczy to również powrotu instrukcji, przerywanie i kontynuowanie instrukcji i innych przechodzi.This includes return statements, break and continue statements, and other jumps.

IndexExpression

Reprezentuje indeksowania właściwości lub tablicy.Represents indexing a property or array.

InvocationExpression

Reprezentuje wyrażenie, które mają zastosowanie delegat lub wyrażenie lambda do listy argumentów wyrażeń.Represents an expression that applies a delegate or lambda expression to a list of argument expressions.

LabelExpression

Reprezentuje etykietę, którą można umieścić w dowolnym Expression kontekstu.Represents a label, which can be put in any Expression context. Jeśli jest on wyniósł do, otrzyma wartość dostarczona przez odpowiednie GotoExpression.If it is jumped to, it will get the value provided by the corresponding GotoExpression. W przeciwnym razie otrzymuje wartość DefaultValue.Otherwise, it receives the value in DefaultValue. Jeśli Type jest równa elementu System.Void, powinien zostać podany żadnej wartości.If the Type equals System.Void, no value should be provided.

LabelTarget

Używany do reprezentowania celem GotoExpression.Used to represent the target of a GotoExpression.

LambdaExpression

W tym artykule opisano wyrażenia lambda.Describes a lambda expression. Przechwytuje tego bloku kodu, która jest podobna do treści metody .NET.This captures a block of code that is similar to a .NET method body.

ListInitExpression

Reprezentuje wywołanie konstruktora, który ma inicjatora kolekcji.Represents a constructor call that has a collection initializer.

LoopExpression

Reprezentuje wejścia w nieskończoną pętlę.Represents an infinite loop. Może być pominięta przy użyciu "break".It can be exited with "break".

MemberAssignment

Reprezentuje operacji przypisania dla pola lub właściwości obiektu.Represents assignment operation for a field or property of an object.

MemberBinding

Udostępnia klasę bazową, z której pochodzi klas, które reprezentują powiązania, które są używane do zainicjowania członków nowo utworzony obiekt.Provides the base class from which the classes that represent bindings that are used to initialize members of a newly created object derive.

MemberExpression

Zapewnia dostęp do pola lub właściwości.Represents accessing a field or property.

MemberInitExpression

Reprezentuje wywołanie konstruktora i Inicjowanie co najmniej jednego członka nowego obiektu.Represents calling a constructor and initializing one or more members of the new object.

MemberListBinding

Reprezentuje inicjowania elementów tworzonej tablicy jest członkiem kolekcji nowo utworzony obiekt.Represents initializing the elements of a collection member of a newly created object.

MemberMemberBinding

Reprezentuje inicjowanie elementów członkowskich elementu członkowskiego nowo utworzony obiekt.Represents initializing members of a member of a newly created object.

MethodCallExpression

Reprezentuje wywołanie statyczną lub metodą wystąpienia.Represents a call to either static or an instance method.

NewArrayExpression

Reprezentuje, tworząc nową tablicę i prawdopodobnie inicjowania elementów tworzonej tablicy nowej tablicy.Represents creating a new array and possibly initializing the elements of the new array.

NewExpression

Reprezentuje wywołanie konstruktora.Represents a constructor call.

ParameterExpression

Reprezentuje wyrażenie nazwany parametr.Represents a named parameter expression.

RuntimeVariablesExpression

Wyrażenie, które udostępnia uprawnienie do odczytu/zapisu środowiska uruchomieniowego dla zmiennych.An expression that provides runtime read/write permission for variables.

SwitchCase

Reprezentuje jeden przypadek SwitchExpression.Represents one case of a SwitchExpression.

SwitchExpression

Reprezentuje wyrażenie kontrolki, która obsługuje wiele sekcji, przekazując kontrolę do SwitchCase.Represents a control expression that handles multiple selections by passing control to SwitchCase.

SymbolDocumentInfo

Przechowuje informacje niezbędne do emitowania debugowania informacji o symbolach dla pliku źródłowego, w szczególności, nazwę pliku i unikatowe identyfikatory języka.Stores information necessary to emit debugging symbol information for a source file, in particular the file name and unique language identifier.

TryExpression

Reprezentuje blok try/catch/finally/błędów.Represents a try/catch/finally/fault block.

TypeBinaryExpression

Reprezentuje operację między typami oraz wyrażenie.Represents an operation between an expression and a type.

UnaryExpression

Reprezentuje wyrażenie zawiera operatora jednoargumentowego.Represents an expression that has a unary operator.

Interfejsy

IArgumentProvider

Interfejs wewnętrzny do uzyskiwania dostępu do argumentów wiele węzłów drzewa (DynamicExpression ElementInit, MethodCallExpression, InvocationExpression, NewExpression i IndexExpression).Provides an internal interface for accessing the arguments of multiple tree nodes (DynamicExpression, ElementInit, MethodCallExpression, InvocationExpression, NewExpression, and IndexExpression). Nie należy używać tego interfejsu API.You should not use this API. Jest tylko publiczny z powodu refaktoryzacji biblioteki DLL i istnieje tylko w przypadku optymalizacji wydajności wewnętrznego.It is only public due to DLL refactoring and exists only for internal performance optimizations.

Dzięki temu dwie optymalizacje, które zmniejszają rozmiar drzewa wyrażeń.This enables two optimizations which reduce the size of expression trees. Pierwszy umożliwia węzły drzewa, które mają być przechowywane IList<T> zamiast ReadOnlyCollection.The first enables the tree nodes to hold onto an IList<T> instead of a ReadOnlyCollection. IList<T> zapisuje koszt przydzielanie ReadOnlyCollection dla każdego węzła.IList<T> saves the cost of allocating the ReadOnlyCollection for each node. Drugi umożliwia tworzenie podklas specjalistyczne, zawierających na określonej liczbie argumentów (na przykład Block2, Block3 Block4).The second enables creating specialized subclasses that hold onto a specific number of arguments (for example, Block2, Block3, Block4). W związku z tym te węzły unikać ReadOnlyCollection i Tablica do przechowywania swoich elementów, zapisywanie 32 bajtów w każdym węźle.Therefore, these nodes avoid allocating both a ReadOnlyCollection and an array for storing their elements, saving 32 bytes per node.

Węzły drzewa wyrażeń w dalszym ciągu udostępnianie oryginalne właściwości LINQ ReadOnlyCollections.The expression tree nodes continue to expose the original LINQ properties of ReadOnlyCollections. Węzły w tym dzięki ponownemu wykorzystaniu pole do przechowywania zarówno tablicy lub element, który normalnie powinny być przechowywane w tablicy.The nodes do this by re-using a field for storing both the array or an element that would normally be stored in the array.

W przypadku tablicy kolekcji jest wpisany IList<T> zamiast ReadOnlyCollection<T>.For the array case, the collection is typed to IList<T> instead of ReadOnlyCollection<T>. Gdy węzeł jest początkowo tworzona jest tablicą.When the node is initially constructed it is an array. Gdy kompilator uzyskuje dostęp do elementów członkowskich używa tego interfejsu.When the compiler accesses the members it uses this interface. Uzyskiwanie dostępu do elementów tablicy promuje macierzy ReadOnlyCollection.Accessing array elements promotes the array to a ReadOnlyCollection.

W przypadku obiektu przechowujemy pierwszy argument w polu z kontrolą typów do obiektu.For the object case we store the first argument in a field typed to object. Gdy węzeł początkowo jest konstruowany, pole zawiera wyrażenie.When the node is initially constructed, the field holds the Expression. Kompilator uzyskuje dostęp do argumentów za pomocą tego interfejsu, a metody dostępu dla pierwszego argumentu użyto Expression.ReturnObject, która zwraca obiekt, który obsługuje przypadek, wyrażenie lub ReadOnlyCollection.The compiler accesses arguments through this interface, and the accessor for the first argument uses Expression.ReturnObject to return the object that handles the Expression or ReadOnlyCollection case. Gdy użytkownik uzyskuje dostęp do ReadOnlyCollection, pole Obiekt jest aktualizowany do przechowywania bezpośrednio na ReadOnlyCollection.When the user accesses the ReadOnlyCollection, then the object field is updated to hold directly onto the ReadOnlyCollection.

Należy pamiętać, że wyrażenia stale zwracają ReadOnlyCollection ten sam.It is important that the Expressions consistently return the same ReadOnlyCollection. W przeciwnym razie ponownego zapisywania walker drzewa spowoduje awarię.Otherwise, the re-writer tree walker will break. Jest istotną zmianę z LINQ w wersji 1 do zwrócenia innego ReadOnlyCollections tworzą tego samego węzła wyrażenia.It is a breaking change from LINQ v1 to return different ReadOnlyCollections form the same Expression node. Obecnie użytkownicy polegać na tożsamość obiektu, aby sprawdzić, czy węzeł został zmieniony.Currently users can rely on object identity to tell if the node has changed. Przechowywanie ReadOnlyCollection pola jest przeciążona i zmniejsza użycie pamięci zachowuje zgodność z publicznego interfejsu API.Storing the ReadOnlyCollection in an overloaded field both reduces memory usage and maintains compatibility for the public API.

IDynamicExpression

Interfejs wewnętrzny do uzyskiwania dostępu do argumentów DynamicExpression węzły drzewa, a także miejsca wywołania i Rewriting funkcje.Provides an internal interface for accessing the arguments of DynamicExpression tree nodes as well as CallSite and Rewriting functionality. Nie należy używać tego interfejsu API.You should not use this API. Jest tylko publiczny z powodu refaktoryzacji biblioteki DLL i istnieje tylko w przypadku optymalizacji wydajności wewnętrznego.It is only public due to DLL refactoring and exists only for internal performance optimizations.

Wyliczenia

ExpressionType

W tym artykule opisano typy węzłów dla węzłów z drzewa wyrażenie.Describes the node types for the nodes of an expression tree.

GotoExpressionKind

Określa, jaki rodzaj szybkiego dostępu to GotoExpression reprezentuje.Specifies what kind of jump this GotoExpression represents.

MemberBindingType

W tym artykule opisano typy powiązań, które są używane w MemberInitExpression obiektów.Describes the binding types that are used in MemberInitExpression objects.

Uwagi

Klasa abstrakcyjna Expression zawiera katalog główny hierarchii klas używane w drzewach wyrażeń modelu.The abstract class Expression provides the root of a class hierarchy used to model expression trees.

Klasy w tej przestrzeni nazw, która pochodzi od Expression, na przykład MemberExpression i ParameterExpression, są używane do reprezentowania węzłów na drzewo wyrażenia.The classes in this namespace that derive from Expression, for example MemberExpression and ParameterExpression, are used to represent nodes in an expression tree. Expression Klasa zawiera static (Shared w języku Visual Basic) metodami factory, aby utworzyć wyrażenie węzły drzewa spośród różnych typów.The Expression class contains static (Shared in Visual Basic) factory methods to create expression tree nodes of the various types.

Typ wyliczeniowy ExpressionType Określa typy węzłów unikatowy.The enumeration type ExpressionType specifies the unique node types.