C# Problem z interface

0

Witam,

Chce zrobić interface który ma zmienne zapisujące statystyki postaci i chce teraz użyć je w klasie która przechowuje dla konkretnej jednostki.

    interface Szkielet
    {

        uint health { get; set; }

    }

    class Warrior : Szkielet
    { 
  
        public uint health
        {
            get => throw new NotImplementedException();
            set => health = 100;
        }

A potem chciałem wyświetlić w richboxie czy działa wartość tej zmiennej.

 Warrior warrior = new Warrior();
richTextBox1.Text = warrior.health.ToString();

Jednak nic się nie wyświetla. Dopiero zaczynam naukę z tym i jeszcze nie rozumiem tego do końca.

1

Kod z set wykonuje się wtedy, kiedy próbujesz coś zapisać do swojej zmiennej health. Z kolei kod z get, kiedy próbujesz ją odczytać. To zadziwiające, że ci się nic nie wyświetla, bo powinieneś dostać wyjątek przy próbie odczytu warrior.health.

Ogólnie: nadanie podstawowej wartości jest zadaniem konstruktora, nie settera. Nieco bardziej poprawna wersja:

interface Szkielet
{
    uint Health { get; set; }
}

class Warrior : Szkielet
{
    public uint Health { get; set; }

    public Warrior()
    {
        Health = 100;
    }        
}

Alternatywnie: public uint Health { get; set; } = 100 też będzie ok. Na początku, po utworzeniu każdego obiektu klasy Warrior, wartość właściwości Health będzie wynosiła 100.

0

Dziękuje za wyjaśnienie i pomoc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1