ReadOnly (Visual Basic)
Spécifie qu’une variable ou une propriété peut être lue, mais pas écrite.
Notes
Règles
Contexte de déclaration. Vous pouvez utiliser
ReadOnly
seulement au niveau du module. Cela signifie que le contexte de déclaration d'un élémentReadOnly
doit être une classe, une structure ou un module, et ne peut pas être un fichier source, un espace de noms ou une procédure.Modificateurs combinés. Vous ne pouvez pas spécifier
ReadOnly
avecStatic
dans la même déclaration.Attribution d’une valeur. Un code consommant une propriété
ReadOnly
ne peut pas définir sa valeur. Toutefois, le code qui a accès au stockage sous-jacent peut attribuer ou modifier la valeur à tout moment.Vous ne pouvez attribuer une valeur à une variable
ReadOnly
que dans sa déclaration ou dans le constructeur d'une classe ou d'une structure dans laquelle elle est définie.
Quand utiliser une variable ReadOnly
Il existe des situations dans lesquelles vous ne pouvez pas utiliser une Instruction Const pour déclarer et attribuer une valeur constante. Par exemple, l’instruction Const
peut ne pas accepter le type de données que vous souhaitez attribuer, ou vous ne pourrez peut-être pas calculer la valeur au moment de la compilation avec une expression constante. Vous ne connaissez peut-être même pas la valeur au moment de la compilation. Dans ces cas, vous pouvez utiliser une variable ReadOnly
pour contenir une valeur constante.
Important
Si le type de données de la variable est un type référence, tel qu’un tableau ou une instance de classe, ses membres peuvent être modifiés même si la variable elle-même est ReadOnly
. L'exemple suivant illustre ce comportement.
ReadOnly characterArray() As Char = {"x"c, "y"c, "z"c}
Sub ChangeArrayElement()
characterArray(1) = "M"c
End Sub
Lors de l’initialisation, le tableau pointé par characterArray()
contient « x », « y » et « z ». Étant donné que la variable characterArray
est ReadOnly
, vous ne pouvez pas modifier sa valeur une fois qu’elle est initialisée ; autrement dit, vous ne pouvez pas lui attribuer un nouveau tableau. Toutefois, vous pouvez modifier les valeurs d’un ou plusieurs membres du tableau. Après un appel à la procédure ChangeArrayElement
, le tableau pointé par characterArray()
contient « x », « M » et « z ».
Notez que cela est similaire à la déclaration d’un paramètre de procédure à ByVal, ce qui empêche la procédure de modifier l’argument appelant lui-même, mais lui permet de modifier ses membres.
Exemple
L’exemple suivant définit une propriété ReadOnly
pour la date à laquelle un employé a été embauché. La classe stocke la valeur de propriété en interne sous forme de variable Private
, et seul le code à l’intérieur de la classe peut modifier cette valeur. Toutefois, la propriété est Public
, et tout code pouvant accéder à la classe peut lire la propriété.
Class employee
' Only code inside class employee can change the value of hireDateValue.
Private hireDateValue As Date
' Any code that can access class employee can read property dateHired.
Public ReadOnly Property dateHired() As Date
Get
Return hireDateValue
End Get
End Property
End Class
Le modificateur ReadOnly
peut être utilisé dans les contextes suivants :