Init only Properties sind unveränderbare Datenobjekte, die einmal initialisiert den Zustand nicht mehr ändern können. Dazu verwendet man das Schlüsselwort init anstelle von set.
// Auto property
public Guid MyId { get; init; }
// property
private Guid myId;
public Guid MyId{
get {return myId;}
init {myId = value;}
}
// lambda property
private Guid myId;
public Guid MyId{
get => myId;
init => myId = value;
}
Wird nun die „MyId“ einmal zugewiesen, kann diese nicht mehr versehentlich überschrieben werden. „MyId“ kann nur bei der Objektinitialisierung oder über den Konstruktor festgelegt werden.
// object class with the secret
public class MySecret
{
public MySecret()
{
}
public MySecret(Guid myId)
{
MyId = myId;
}
public Guid MyId { get; init; }
}
// Example 1
// create an object with the secret
// assign with object initializer
MySecret mySecret = new MySecret()
{
MyId = Guid.NewGuid()
};
// Example 2
// create an object with the secret
// assign in the instance constructor
MySecret mySecret2 = new MySecret(Guid.NewGuid());