Implementieren einer schreibgeschützten Eigenschaft in C#

Bilal Shahid 15 Februar 2024
  1. Deklarieren Sie die Read-Only-Eigenschaft einer Variablen beim Initialisieren in C#
  2. Implementieren Sie eine schreibgeschützte Eigenschaft mit einer einfachen get-Eigenschaft in C#
Implementieren einer schreibgeschützten Eigenschaft in C#

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:

Schreibgeschützte C#-Eigenschaft für Variable – Fehler

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:

C#-schreibgeschützte Eigenschaft mit GET – Fehler

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#.

Bilal Shahid avatar Bilal Shahid avatar

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

Verwandter Artikel - Csharp Property