Implémenter une propriété en lecture seule en C#
-
Déclarer la propriété en lecture seule sur une variable lors de l’initialisation en
C#
-
Implémenter une propriété en lecture seule à l’aide d’une simple propriété
get
enC#
Aujourd’hui, nous allons apprendre à créer une propriété en lecture seule en C#, afin qu’elle ne puisse être lue et non modifiée.
Déclarer la propriété en lecture seule sur une variable lors de l’initialisation en C#
Nous avons travaillé sur la classe CAR
pour les deux derniers articles. Utilisons la même classe et essayons d’implémenter une propriété en lecture seule. Disons que notre classe CAR
a une propriété appelée maker_id
que nous voulons garder en lecture seule pour des raisons de sécurité.
using System;
class CAR {
private readonly int maker_id;
public CAR(int maker_id) {
this.maker_id = maker_id;
}
public int get_maker_id() {
return maker_id;
}
}
public class Program {
static void Main(String[] args) {
CAR x = new CAR(5);
Console.WriteLine(x.get_maker_id());
}
}
Nous avons donc déclaré le maker_id
comme readonly
. Si vous exécutez ce qui précède, la sortie sera :
5
Supposons donc que nous souhaitions maintenant ajouter un autre setter pour notre champ maker_id
. Nous pouvons alors faire quelque chose comme suit :
public void set_maker_id(int maker_id) {
this.maker_id = maker_id;
}
Mais, vous remarquerez maintenant qu’il génère une erreur :
Vous pouvez donc voir que la propriété readonly
ne nous permet d’affecter la valeur qu’une seule fois à une variable dans le constructeur. Sinon, il a tendance à générer des erreurs et à refuser toute modification en raison de l’accessibilité.
Le code complet est affiché ci-dessous :
using System;
class CAR {
private readonly int maker_id;
public CAR(int maker_id) {
this.maker_id = maker_id;
}
public void set_maker_id(int maker_id) {
this.maker_id = maker_id; // line ERROR
}
public int get_maker_id() {
return maker_id;
}
}
public class Program {
static void Main(String[] args) {
CAR x = new CAR(5);
Console.WriteLine(x.get_maker_id());
}
}
L’erreur a été mentionnée dans les commentaires du code.
Implémenter une propriété en lecture seule à l’aide d’une simple propriété get
en C#
Nous pouvons écrire la propriété maker_id
comme suit :
private int maker_id { get; }
Et si vous essayez d’écrire une fonction comme suit :
public void set_val(int val) {
this.maker_id = val;
}
Une erreur sera produite comme suit :
Vous voyez donc comment la définition de la propriété get
en fait une propriété en lecture seule. Le code complet est le suivant :
using System;
class CAR {
private int maker_id {
get;
set;
}
public CAR(int maker_id) {
this.maker_id = maker_id;
}
}
class Program {
static void Main(String[] args) {
CAR x = new CAR(5);
}
}
Non seulement cela suit les règles de la convention, mais cela a également tendance à casser les sérialiseurs. De plus, il ne change pas et a tendance à être immuable.
Si vous voulez vous assurer que get
renvoie quelque chose, créez le code comme suit :
class CAR {
public int maker_id {
get { return maker_id; }
}
}
C’est ainsi que vous implémentez une lecture seule en C#.
Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!
GitHub