Instructions
Expressions
Opérateurs
Des chercheurs danois et suédois en sciences informatiques et systèmes autonomes ont décortiqué la sécurité...
Nvidia se prépare à livrer la plate-forme serveur HGX-2 qui sera capable d'exploiter la puissance de 16 GPU Tesla V100...
L'EMD, une école de commerce située à Marseille ouvre à la prochaine rentrée l'école du numérique...
x
et y
sont des entiers, l'expression x + y
correspond à une valeur numérique.
L'expression new MyClass()
correspond à une référence à une nouvelle instance d'une classe MyClass
.
L'expression myClass.ToString()
correspond à une chaîne, car c'est le type de retour de la méthode.
Toutefois, même si un espace de noms est considéré comme une expression, il ne correspond pas à une valeur et ne peut donc jamais être le résultat final d'une expression.
Vous ne pouvez pas passer un nom d'espace de noms à un paramètre de méthode,
ni l'utiliser dans une nouvelle expression ou l'affecter à une variable.
Vous pouvez l'utiliser uniquement en tant que sous-expression dans une expression plus longue.
Il en va de même pour les types (par opposition aux objets System.Type
), aux noms de groupes de méthodes (par opposition aux méthodes spécifiques)
et aux accesseurs d'événements add
et remove
.x
et y
sont toutes deux des variables de type int
, la valeur de l'expression x + y
est également de type int
.
Si la valeur est assignée à une variable d'un type différent, ou si x
et y
sont des types différents,
les règles de conversion de type sont appliquées.Checked
et Unchecked
.5
et "Hello World"
sont des valeurs littérales :i
et s
sont des noms simples qui identifient des variables locales.
Quand ces variables sont utilisées dans une expression, le nom de la variable prend la valeur qui est stockée actuellement à l'emplacement de la variable en mémoire.
Ceci est illustré dans l'exemple suivant :DoWork
est une expression d'appel.void
ne peuvent pas être utilisées à la place d'une valeur dans une expression.LINQ
."méthodes inline"
qui n'ont aucun nom mais qui peuvent avoir des paramètres d'entrée et plusieurs instructions.
Elles sont largement utilisées dans LINQ
pour passer des arguments aux méthodes. Les expressions lambda sont compilées en délégués ou en
arborescences de l'expression en fonction du contexte dans lequel elles sont utilisées.LINQ
pour traduire des expressions de requête en code explicite dans un autre contexte,
comme une base de données SQL
.expression-bodied
, qui vous permettent de fournir une définition de corps d'expression concise pour des méthodes,
des constructeurs, des finaliseurs, des propriétés et des indexeurs.Membre | Prise en charge à compter de |
---|---|
Méthode | C# 6 |
Propriété en lecture seule | C# 6 |
Property | C# 7.0 |
Constructeur | C# 7.0 |
Finaliseur | C# 7.0 |
Indexeur | C# 7.0 |
expression-bodied
se compose d'une seule expression qui retourne une valeur dont le type correspond au type de retour de la méthode ou,
pour les méthodes qui retournent void
, qui effectue une opération. Par exemple, les types qui substituent la méthode ToString
incluent généralement une expression unique qui retourne la représentation sous forme de chaîne de l'objet actuel.Person
qui substitue la méthode ToString
avec une définition de corps d'expression.
Il définit également une méthode DisplayName
qui affiche un nom sur la console.
Notez que le mot clé return
n'est pas utilisé dans la définition de corps d'expression ToString
.Location
dont la propriété en lecture seule Name
est implémentée comme une définition
de corps d'expression qui retourne la valeur du champ privé locationName
:get
et les accesseurs set
.
L'exemple suivant montre comment faire :Location
dont le constructeur a un seul paramètre de chaîne nommé name
.
La définition de corps d'expression assigne l'argument à la propriété Name
.get
et set
d'un indexeur sont composés de définitions de corps d'expression si l'accesseur get
est constitué d'une seule
instruction qui retourne une valeur ou si l'accesseur set
effectue une assignation simple.Sports
qui inclut un tableau String
interne contenant les noms de plusieurs sports.
Les accesseurs get
et set
de l'indexeur sont implémentés en tant que définitions de corps d'expression.