Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article traite des erreurs suivantes du compilateur :
- CS0765 - Les méthodes partielles avec uniquement une déclaration de définition ou des méthodes conditionnelles supprimées ne peuvent pas être utilisées dans les arborescences d’expressions.
- CS0831 - Une arborescence d’expression ne doit pas contenir d’accès de base.
- CS0832 - Une arborescence d’expression ne doit pas contenir d’opérateur d’assignation
- CS0834 - Une expression lambda avec un corps d’instruction ne peut pas être convertie en arborescence d’expression.
- CS0835 - Impossible de convertir une expression lambda en arborescence d’expression dont l’argument de type 'type' n’est pas un type délégué.
- CS0838 - Une arborescence d’expression ne doit pas contenir d’initialiseur de tableau multidimensionnel.
- CS0845 - Une arborescence d’expression lambda ne doit pas contenir d’opérateur de coalescence avec un littéral nul ou un littéral par défaut dans la partie de gauche.
- CS0853 - Une arborescence d’expression ne doit pas contenir de spécification d’argument nommé.
- CS0854 - Une arborescence d’expression ne doit pas contenir d’appel qui utilise des arguments facultatifs.
- CS0855 - Une arborescence d’expression ne doit pas contenir de propriété indexée.
- CS1944 - Une arborescence d’expression ne doit pas contenir d’opération de pointeur unsafe.
- CS1945 - Une arborescence d’expression ne doit pas contenir d’expression de méthode anonyme.
- CS1946 - Une expression de méthode anonyme ne peut pas être convertie en arborescence d’expression.
-
CS1951 - Une arborescence d’expression lambda ne doit pas contenir de paramètre
ref,inouout. - CS1952 - Une arborescence d’expression lambda ne doit pas contenir de méthode avec des arguments variables.
- CS1963 - Une arborescence d’expression ne doit pas contenir d’opération dynamique.
- CS1989 - Les expressions lambda asynchrones ne peuvent pas être converties en arborescences d’expressions.
- CS2037 - Une arborescence d’expression lambda ne doit pas contenir d’appel COM avec ref omis pour les arguments.
- CS7053 - Une arborescence d’expression ne doit pas contenir « fonctionnalité ».
- CS8072 - Une arborescence d’expression lambda ne doit pas contenir d’opérateur de propagation de valeur nulle.
- CS8074 - Une arborescence d’expression lambda ne doit pas contenir d’initialiseur de dictionnaire.
-
CS8075 - Une méthode d’extension
Addn’est pas prise en charge pour un initialiseur de collection dans une expression lambda. - CS8110 - Une arborescence d’expression ne doit pas contenir de référence à une fonction locale.
-
CS8122 - Une arborescence d’expression ne doit pas contenir l’opérateur de critères spéciaux «
is». - CS8143 - Une arborescence d’expression ne doit pas contenir de littéral de tuple.
- CS8144 - Une arborescence d’expression ne doit pas contenir de conversion de tuple.
- CS8153 - Une arborescence d’expression lambda ne doit pas contenir d’appel à une méthode, une propriété ou un indexeur qui effectue un retour par référence.
- CS8155 - Les expressions lambda qui effectuent un retour par référence ne peuvent pas être converties en arborescences d’expressions.
- CS8188 - Une arborescence d’expression ne doit pas contenir d’expression throw.
- CS8198 - Une arborescence d’expression ne doit pas contenir de déclaration de variable d’argument de sortie.
- CS8207 - Une arborescence d’expression ne doit pas contenir de discard.
-
CS8382 - Une arborescence d’expression ne doit pas contenir d’opérateur de tuple
==ou!=. - CS8514 - Une arborescence d’expression ne doit pas contenir d’expression switch.
- CS8640 - Un arbre d'expression ne peut contenir de valeur d'un type ref struct ou d'un type restreint.
- CS8642 - Une arborescence d’expression ne doit pas contenir d’assignation de coalescence nulle.
- CS8790 - Une arborescence d’expression ne peut pas contenir de motif System.Index ou d’accès aux indexeurs System.Range.
-
CS8791 - Une arborescence d’expression ne doit pas contenir d’expression utilisant l’opérateur («
^») pour désigner un index dont les éléments sont comptés à partir de la fin. -
CS8792 - Une arborescence d’expression ne doit pas contenir d’expression de plage («
..»). -
CS8810 - «
&» des groupes de méthodes ne peut pas être utilisé dans les arborescences d’expressions. -
CS8849 - Une arborescence d’expression ne doit pas contenir d’expression
with. - CS8927 - Une arborescence d'expression ne peut pas contenir un accès à un membre d’interface virtuel statique ou abstrait.
- CS8952 - Une arborescence d’expression ne doit pas contenir de conversion de gestionnaire de chaînes interpolées.
- CS8972 - Une expression lambda avec des attributs ne peut pas être convertie en arborescence d’expression.
- CS9170 - Une arborescence d’expression ne doit pas contenir d’accès à un tableau inline ou de conversion.
- CS9175 - Une arborescence d’expression ne doit pas contenir d’expression de collection.
- CS9226 - Une arborescence d’expressions peut ne pas contenir une forme développée de paramètre de collection params qui n’est pas un tableau.
- CS9296 - Une arborescence d’expressions ne peut pas contenir d’accès à une propriété d’extension ou à un indexeur.
- CS9307 - Une arborescence d’expressions peut ne pas contenir de spécification d’argument nommé hors position.
- CS9369 - Une arborescence d’expressions peut ne pas contenir de conversion d’union.
Restrictions relatives à l'arbre d'expression
Toutes les erreurs de la liste précédente indiquent que vous avez utilisé un type d’expression C# qui n’est pas autorisé dans une arborescence d’expressions. Dans la plupart des cas, les expressions interdites représentent une syntaxe introduite après C# 3.0. Ces expressions sont interdites, car leur autorisation entraînerait un changement cassant dans toutes les bibliothèques qui analysent les arborescences d’expressions. Toutes les bibliothèques doivent être améliorées pour analyser les nouvelles expressions C#, si des constructions plus récentes sont autorisées.
Les expressions suivantes sont interdites :
- Appels de méthodes partielles qui n’ont pas de déclaration d’implémentation.
- Appels de méthodes conditionnelles qui ont été supprimées.
- Appels de fonctions locales.
-
asyncexpressions lambda. - Utilisation de
basepour appeler directement une méthode virtuelle déclarée dans une classe de base. - Opérations d’affectation.
- lambdas avec corps d’instructions.
- Initialiseurs de tableaux multidimensionnels. Au lieu de cela, créez et initialisez un tableau multidimensionnel en dehors de l’arborescence d’expressions.
-
dynamicopérations. - expressions de filtrage par motif.
- Les littéraux de tuple et de nombreuses opérations sur les tuples, comme les comparaisons d’égalité.
-
throwexpressions. - Déclarations `discard` (
_). - Opérateurs d’index et de plage .
- Mutation non-destructrice utilisant des expressions
with. - Déclaration ou accès aux tableaux inline.
- Y compris les expressions de collection.
- Conversions de type union.
- Opérateurs de propagation de null et de fusion de null.
-
ref structtypes, tels que System.Span<T> et System.ReadOnlySpan<T>. - les paramètres
in,outetref, y compris les déclarations de variablesout. -
refretours. - Appels aux méthodes qui renvoient par
ref. - Accès aux membres d’interface statiques abstraits.
- Tableaux inlined.
- Modificateur
paramssur tout élément autre que des tableaux unidimensionnels.
Autres restrictions :
- Impossible d’accéder aux propriétés d’extension et aux indexateurs en tant qu’extensions.
- Impossible d’appliquer des attributs à l’expression lambda, à ses paramètres ou à son retour.
- L’expression lambda doit être convertible en un type dérivé de System.Linq.Expressions.Expression dont le paramètre de type est un type délégué.
- Restriction des paramètres nommés et facultatifs. L’expression ne peut pas appeler de méthode spécifiant des arguments nommés, et elle ne peut pas utiliser la valeur par défaut d’un paramètre facultatif.
- Impossible d’utiliser des initialiseurs de dictionnaire ou des méthodes d’extension
Add. - L’expression cible doit être une expression lambda. Les constantes et les variables ne sont pas autorisées. En revanche, les expressions lambda qui retournent des constantes ou des variables le sont.
- Les opérations de pointeur non sécurisées ne sont pas autorisées.
- Les appels COM doivent inclure
refsur les arguments. Cela ne peut pas être implicite. - Mot clé non pris en
__arglistcharge.