Implementieren einer schreibgeschützten Eigenschaft in C#
-
Deklarieren Sie die Read-Only-Eigenschaft einer Variablen beim Initialisieren in
C#
-
Implementieren Sie eine schreibgeschützte Eigenschaft mit einer einfachen
get
-Eigenschaft inC#
Heute lernen wir, wie man eine schreibgeschützte Eigenschaft in C# erstellt, sodass sie nur gelesen und nicht geändert werden kann.
Deklarieren Sie die Read-Only-Eigenschaft einer Variablen beim Initialisieren in C#
Für die letzten beiden Artikel haben wir an der Klasse CAR
gearbeitet. Lassen Sie uns dieselbe Klasse verwenden und versuchen, eine schreibgeschützte Eigenschaft zu implementieren. Nehmen wir an, unsere Klasse CAR
hat eine Eigenschaft namens maker_id
, die wir aus Sicherheitsgründen schreibgeschützt halten möchten.
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());
}
}
Also haben wir die maker_id
als readonly
deklariert. Wenn Sie das obige ausführen, lautet die Ausgabe:
5
Nehmen wir also an, wir möchten jetzt einen weiteren Setter für unser Feld maker_id
hinzufügen. Wir können dann etwas wie folgt tun:
public void set_maker_id(int maker_id) {
this.maker_id = maker_id;
}
Aber Sie werden jetzt feststellen, dass es einen Fehler auslöst:
Sie können also sehen, dass die Eigenschaft readonly
uns den Wert nur einmal einer Variablen im Konstruktor zuweisen lässt. Andernfalls neigt es dazu, Fehler zu werfen, und verweigert Änderungen aufgrund der Zugänglichkeit.
Der vollständige Code ist unten dargestellt:
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());
}
}
Der Fehler wurde in den Kommentaren im Code erwähnt.
Implementieren Sie eine schreibgeschützte Eigenschaft mit einer einfachen get
-Eigenschaft in C#
Wir können die Eigenschaft maker_id
wie folgt schreiben:
private int maker_id { get; }
Und wenn Sie versuchen, eine Funktion wie folgt zu schreiben:
public void set_val(int val) {
this.maker_id = val;
}
Ein Fehler wird wie folgt erzeugt:
Sie sehen also, wie das Setzen der Eigenschaft get
sie schreibgeschützt macht. Der vollständige Code lautet wie folgt:
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);
}
}
Dies folgt nicht nur Konventionsregeln, sondern neigt auch dazu, Serialisierer zu brechen. Außerdem ändert es sich nicht und neigt dazu, unveränderlich zu sein.
Falls Sie sicherstellen möchten, dass get
etwas zurückgibt, erstellen Sie den Code wie folgt:
class CAR {
public int maker_id {
get { return maker_id; }
}
}
So implementieren Sie also eine schreibgeschützte Datei in 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