Notes
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.
Exécute une série d’instructions qui font référence à plusieurs reprises à un objet ou à une structure unique afin que les instructions puissent utiliser une syntaxe simplifiée lors de l’accès aux membres de l’objet ou de la structure. Lorsque vous utilisez une structure, vous pouvez uniquement lire les valeurs des membres ou appeler des méthodes, et vous obtenez une erreur si vous essayez d’affecter des valeurs aux membres d’une structure utilisée dans une With...End With
instruction.
Syntaxe
With objectExpression
[ statements ]
End With
Pièces
Terme | Définition |
---|---|
objectExpression |
Obligatoire. Expression qui prend la valeur d’un objet. L’expression peut être arbitrairement complexe et n’est évaluée qu’une seule fois. L’expression peut évaluer n’importe quel type de données, y compris les types élémentaires. |
statements |
Optionnel. Une ou plusieurs instructions entre With et End With qui peuvent faire référence aux membres d’un objet généré par l’évaluation de objectExpression . |
End With |
Obligatoire. Termine la définition du With bloc. |
Remarques
En utilisant With...End With
, vous pouvez effectuer une série d’instructions sur un objet spécifié sans spécifier le nom de l’objet plusieurs fois. Dans un bloc d’instructions With
, vous pouvez spécifier un membre de l’objet commençant par un point, comme si l’objet With
d’instruction l’a précédé.
Par exemple, pour modifier plusieurs propriétés sur un seul objet, placez les instructions d’affectation de propriété à l’intérieur du With...End With
bloc, faisant référence à l’objet une seule fois au lieu d’une seule fois pour chaque affectation de propriété.
Si votre code accède au même objet dans plusieurs instructions, vous bénéficiez des avantages suivants à l’aide de l’instruction With
:
Vous n’avez pas besoin d’évaluer une expression complexe plusieurs fois ou d’affecter le résultat à une variable temporaire pour faire référence à ses membres plusieurs fois.
Vous rendez votre code plus lisible en éliminant les expressions éligibles répétitives.
Le type de données de peut être n’importe objectExpression
quel type de classe ou de structure ou même un type élémentaire Visual Basic tel que Integer
. En objectExpression
cas de résultat autre qu’un objet, vous pouvez uniquement lire les valeurs de ses membres ou appeler des méthodes, et vous obtenez une erreur si vous essayez d’affecter des valeurs aux membres d’une structure utilisée dans une With...End With
instruction. Il s’agit de la même erreur que si vous avez appelé une méthode qui a retourné une structure et qui a immédiatement accédé et affecté une valeur à un membre du résultat de la fonction, par GetAPoint().x = 1
exemple . Le problème dans les deux cas est que la structure existe uniquement sur la pile des appels, et qu’il n’existe aucun moyen pour un membre de structure modifié dans ces situations peut écrire dans un emplacement de sorte que tout autre code du programme puisse observer la modification.
La objectExpression
valeur est évaluée une fois, lors de l’entrée dans le bloc. Vous ne pouvez pas réaffecter à objectExpression
partir du With
bloc.
Dans un With
bloc, vous pouvez accéder aux méthodes et aux propriétés de l’objet spécifié uniquement sans les qualifier. Vous pouvez utiliser des méthodes et des propriétés d’autres objets, mais vous devez les qualifier avec leurs noms d’objets.
Vous pouvez placer une instruction dans une With...End With
autre. Les instructions imbriquées peuvent être déroutantes With...End With
si les objets référencés ne sont pas clairs du contexte. Vous devez fournir une référence complète à un objet qui se trouve dans un bloc externe With
lorsque l’objet est référencé à partir d’un bloc interne With
.
Vous ne pouvez pas faire une branche dans un bloc d’instructions With
en dehors du bloc.
Sauf si le bloc contient une boucle, les instructions s’exécutent une seule fois. Vous pouvez imbriquer différents types de structures de contrôle. Pour plus d’informations, consultez Structures de contrôle imbriquées.
Remarque
Vous pouvez également utiliser le With
mot clé dans les initialiseurs d’objets. Pour plus d’informations et d’exemples, consultez Initialiseurs d’objets : Types nommés et anonymes et types anonymes.
Si vous utilisez un With
bloc uniquement pour initialiser les propriétés ou les champs d’un objet que vous venez d’instancier, envisagez plutôt d’utiliser un initialiseur d’objet.
Exemple 1
Dans l’exemple suivant, chaque With
bloc exécute une série d’instructions sur un seul objet.
Private Sub AddCustomer()
Dim theCustomer As New Customer
With theCustomer
.Name = "Coho Vineyard"
.URL = "http://www.cohovineyard.com/"
.City = "Redmond"
End With
With theCustomer.Comments
.Add("First comment.")
.Add("Second comment.")
End With
End Sub
Public Class Customer
Public Property Name As String
Public Property City As String
Public Property URL As String
Public Property Comments As New List(Of String)
End Class
Exemple 2
L’exemple suivant imbrication des With…End With
instructions. Dans l’instruction imbriquée With
, la syntaxe fait référence à l’objet interne.
Dim theWindow As New EntryWindow
With theWindow
With .InfoLabel
.Content = "This is a message."
.Foreground = Brushes.DarkSeaGreen
.Background = Brushes.LightYellow
End With
.Title = "The Form Title"
.Show()
End With