Gå til indholdet

N267 Mutable og Immutable Person

Du skal skabe en tom konsolapplikation, hvor du implementerer to forskellige klasser, MutablePerson og ImmutablePerson, der repræsenterer en person med navn og alder. Opgaven består af følgende trin:

  1. Skab en MutablePerson-klasse, hvor både Name og Age kan ændres.
  2. Skab en ImmutablePerson-klasse, hvor Name og Age er immutable (kan ikke ændres).
  3. I hovedprogrammet oprettes instanser af begge klasser, og deres værdier udskrives på skærmen.
Klik for at se et forslag til en løsning
// Klasse til mutable person
public class MutablePerson
{
    // Offentlige egenskaber, der kan ændres
    public string Name { get; set; }
    public int Age { get; set; }

    // Konstruktor
    public MutablePerson(string name, int age)
    {
        Name = name;
        Age = age;
    }

    // Metode til at udskrive detaljer om personen
    public void DisplayInfo()
    {
        Console.WriteLine($"MutablePerson: {Name}, {Age} år");
    }
}

// Klasse til immutable person
public class ImmutablePerson
{
    // Offentlige readonly egenskaber, der ikke kan ændres
    public string Name { get; }
    public int Age { get; }

    // Konstruktor med init-egenskaber
    public ImmutablePerson(string name, int age)
    {
        Name = name;
        Age = age;
    }

    // Metode til at udskrive detaljer om personen
    public void DisplayInfo()
    {
        Console.WriteLine($"ImmutablePerson: {Name}, {Age} år");
    }
}

// Hovedprogram
class Program
{
    static void Main()
    {
        // Opret en mutable person
        MutablePerson mutablePerson = new MutablePerson("Alice", 30);
        mutablePerson.DisplayInfo();
        mutablePerson.Age = 31; // Ændrer alder
        mutablePerson.DisplayInfo();

        // Opret en immutable person
        ImmutablePerson immutablePerson = new ImmutablePerson("Bob", 40);
        immutablePerson.DisplayInfo();
        // immutablePerson.Age = 41; // Kan ikke ændres

        // Udskriv info igen
        mutablePerson.DisplayInfo();
        immutablePerson.DisplayInfo();
    }
}